공통 분야 :
AutoField () 기본 키 AUTO_INCREMENT 값 int CharField () VARCHAR () IntegerField () INT () 큰 .... 을 emailField ()를 VARCHAR ( 254 ) 하여 DateField () 날짜 DateTimeField () 날짜 auto_now : 때마다 업데이트됩니다 데이터를 수정 auto_now_add를 : 먼저 데이터를 생성 할 때 한 번만 갱신 BooleanField을 (필드) is_delete = BooleanField () 만을 부울 값을 통과 할 때 필드 값을 전달 하지만 저장 데이터베이스가 0과 1로는 대응 (텍스트 필드 필드) - 텍스트의 유형 텍스트의 큰 조각을 유지하는 데 사용 및 FileField (필드) -경로 데이터베이스에 저장된 문자열, 지정된 디렉토리에 파일 업로드 - 매개 변수 : upload_to = "" 사용자는 지정된 파일 경로 등호로 자동으로 파일을 업로드하는 저장 = 없음 스토리지 구성 요소, 기본 django.core.files.storage .FileSystemStorage
사용자 정의 문자 필드 :
클래스 문장은 MyChar (models.Field) : 데프 __init__ (자기, MAX_LENGTH, * 인수, ** kwargs로) : self.max_length = MAX_LENGTH 슈퍼 (). __init__ (MAX_LENGTH = MAX_LENGTH, * 인수, ** kwargs로) 데프 에서 db_type (자동 연결) : 리턴 ' 문자 (% s의) ' %의 self.max_length
외래 키 필드 :
당신이 외래 키 관계 (***** 수립 django2.X 버전을 사용하는 경우 )
를 수동으로 추가 할이 요구를 몇 가지 주요 매개 변수
models.cascade
db_constraints을
데이터베이스 쿼리 최적화 :
연기 만에 select_releated 및 prefect_releated "" " 데이터베이스 쿼리 최적화 " "" #은 문장 내의 모든 작업이 불활성 ORM 쿼리입니다 : 당신이 정말로 데이터를 필요로 할 때 데이터베이스 만 갈 것입니다, 당신은 단지 문을 작성하는 경우에만 ORM을하지 않습니다 갈 것이다 데이터베이스 #에게 이 디자인의 장점은 데이터베이스에 압력을 줄이는 것입니다 #의 RES를 = models.Book.objects.all () #의 인쇄 (RES) #의 RES의 =의 models.Book.objects.values ( '제목') #의 # 인쇄 ( RES) # : R & LT RES에 대한 #의 전단 (r.title) # RES = models.Book.objects.only ( '제목') #의 # 전단 (RES) # 에 R & LT 용 RES : #의 # 전단 (r.title) # 만 데이터베이스 쿼리하면 이동 # 당신이 오류가없는 경우 괄호 안의 특정 분야를 클릭하지만 자주 데이터베이스 쿼리 걸릴 때 인쇄 (r.price)는 #은뿐만 아니라 # RES1 = models.Book.objects.defer ( '제목') 만 연기 번호를 그것은 반대입니다 # RES1의 연구에 대한 # 모든 괄호 패키지 개체 확인하지 않습니다 연기 필드의 모든 정보 #의 당신은 너무 자주 데이터베이스를 이동 브라켓의 필드를 클릭하면 #이 쿼리 #의 인쇄 (r.price ) #이 select_related 및 prefetch_related #이 도움을 select_related하면 연결은 직접에만 외래 키 필드 넣어 괄호 안의 데이터 테이블 작업을 쿼리 #의 RES를 = select_related models.Book.objects.all () () '게시'. #을 RES의 연구를 위해 : #의 인쇄 (r.publish.name) # RES = models.Book.objects.all (). select_related ( 'publish__xxx__yyy__ttt') #의 인쇄 (RES) # RES = models.Book.objects.all () "" " Select_related : 해당 테이블에 직접 인계 현재 테이블 스 플라이 싱 동작 (당신이 한 번에 여러 테이블을 얻을 수 있습니다) 모든 브래킷과 외부 키 필드와 연결됩니다 당신의 데이터베이스 쿼리 테이블을 가로 질러 압력을 줄이기 에만 괄호를 넣어 select_related 관심을 외래 키 필드 (일대일 및 일대) RES = models.Book.objects.all (). select_related ( '외부 키 필드 1__ 외래 키 필드 2__ 외래 키 필드 3__ 외래 키 필드 4') "," " #은 심지어 테이블에 대한 주도권하지 prefetch_related RES = models.Book.objects.prefetch_related가 ( ' 게시 ' ) " "" (당신도 수술대 같은 느낌이 내부에 있지만)도 테이블 운영에 주도권을 쥐고하지 않지만 책 테이블을 모든 촬영 해당 테이블의 ID에있는 모든 데이터를 가지고 공표 게시 = models.Book.objects.prefetch_related가 ( '게시') 고해상도를 괄호 안에 여러 개의 데이터베이스 쿼리를 취할 것입니다 몇 가지 외부 키 필드가 "" " 에 대한 연구 에서고해상도 : 인쇄 (r.publish.name)
거래 :
트랜잭션 ACID 자성 일관성 절연 지속성 에서 django.db의 가져 오기 거래 transaction.atomic와 () : "" " 데이터베이스 작업 블록에 기록 된 트랜잭션 작업에 속하는 " "" models.Book.objects.create () models.Publish.objects.create () #은 책과 출판사 중 하나를 함께 성공하거나 함께 실패 동일한 트랜잭션입니다 추가 인쇄 ( ' 트랜잭션이 끝난 코드 블록을 ' )