(2018-05-11. 파이톤이 제로에서 원까지) 6, (Django) Django 모형1.2.2 클래스의 속성

2725 단어
이전 글은 →1.2.1 정의 모델
클래스의 속성
  • objects: 데이터베이스와 상호작용을 위한 Manager 유형의 대상
  • 모델 클래스를 정의할 때 관리자가 지정되지 않으면 Django는 모델 클래스에 Objects라는 관리자를 제공한다
  • 모델 클래스를 명시적으로 지정하는 관리자 지원
  •     ...
        books = models.Manager()
    
  • 모델 클래스에 관리자를 지정하면django는 모델 클래스에 Objects라는 기본 관리자를 생성하지 않습니다
  • 관리자 관리자
  • 관리자는 Django의 모델이 데이터베이스 조회 조작을 하는 인터페이스로 Django가 응용하는 모든 모델에 최소한의 관리자가 있다
  • 사용자 정의 관리자 클래스는 주로 두 가지 상황에 사용됩니다
  • 상황1: 관리자 클래스에 추가 방법을 추가합니다. 아래'창설 대상'의 방식2
  • 참조
  • 상황2: 관리자가 되돌아오는 원시 조회 집합 수정: get 다시 쓰기queryset () 방법
  • class BookInfoManager(models.Manager):
        def get_queryset(self):
            return super(BookInfoManager, self).get_queryset().filter(isDelete=False)
    class BookInfo(models.Model):
        ...
        books = BookInfoManager()
    

    객체 작성
  • 대상을 만들 때django는 데이터베이스에 대해 읽기와 쓰기를 하지 않습니다
  • save() 방법을 호출해야 데이터베이스와 상호작용을 하고 대상을 데이터베이스에 저장
  • 키워드 매개 변수 구조 모델의 대상을 사용하는 것은 매우 번거롭습니다. 아래의 두 가지 방식을 추천합니다
  • 설명:init _방법은 이미 기본 모델스에 있습니다.Model에서 사용, 사용자 정의 모델에서는 사용할 수 없음
  • 방식1: 모델 클래스에 클래스 방법 추가
  • class BookInfo(models.Model):
        ...
        @classmethod
        def create(cls, title, pub_date):
            book = cls(btitle=title, bpub_date=pub_date)
            book.bread=0
            book.bcommet=0
            book.isDelete = False
            return book
         :from datetime import *
      :book=BookInfo.create("hello",datetime(1980,10,11));
      :book.save()
    
  • 방법2: 사용자 정의 관리자에 방법 추가
  • 관리자의 방법에서self를 통과할 수 있다.모델이 속한 모델 클래스를 얻기
  • class BookInfoManager(models.Manager):
        def create_book(self, title, pub_date):
            book = self.model()
            book.btitle = title
            book.bpub_date = pub_date
            book.bread=0
            book.bcommet=0
            book.isDelete = False
            return book
    
    class BookInfo(models.Model):
        ...
        books = BookInfoManager()
      :book=BookInfo.books.create_book("abc",datetime(1980,1,1))
      :book.save()
    
  • 방식2에서self를 호출할 수 있습니다.create () 는 대상을 만들고 저장합니다. 수동save ()
  • 가 필요하지 않습니다.
    class BookInfoManager(models.Manager):
        def create_book(self, title, pub_date):
            book = self.create(btitle = title,bpub_date = pub_date,bread=0,bcommet=0,isDelete = False)
            return book
    
    class BookInfo(models.Model):
        ...
        books = BookInfoManager()
      :book=Book.books.create_book("abc",datetime(1980,1,1))
      :book.pk
    

    인스턴스의 속성
  • DoesNotExist: 단일 검색을 할 때 모델의 대상이 존재하지 않을 때 이 이상을 일으킬 수 있으며try/except와 결합해서 사용
  • 실례적 방법
  • str(self):object 방법을 다시 씁니다. 이 방법은 대상을 문자열로 변환할 때 호출됩니다
  • save(): 모델 대상을 데이터 테이블에 저장
  • delete(): 모델 대상을 데이터 테이블에서 삭제
  • 다음 글은 →1.2.3 모형 조회

    좋은 웹페이지 즐겨찾기