장고 일반 필드, 데이터베이스 쿼리 최적화 만 연기

공통 분야 :

        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 () 
            #은 책과 출판사 중 하나를 함께 성공하거나 함께 실패 동일한 트랜잭션입니다 추가 
        인쇄 ( ' 트랜잭션이 끝난 코드 블록을 ' )

 

추천

출처www.cnblogs.com/xiaowangba9494/p/11573486.html