Django 기본 - 2: Django 상용 설정 및 ORM

소생 블 로그:http://xsboke.blog.51cto.com
                        -------      ,    ,    

이번 에는 주로 django 에서 자주 사용 되 는 설정 을 수집 하여 여러분 이 조회 하기에 편리 합 니 다.
디 렉 터 리:
  • 한 화 admin, 시간 포맷, 지정 statics.
  • 등록 모델, 사용자 정의 admin.
  • 모델 을 초기 화하 고 슈퍼 사용 자 를 만 듭 니 다.
  • ORM.
  • ORM 사용
  • 상용 설정
  • 한 화 admin, 시간 포맷, statics 지정. 한 화 admin, 시간 대 지정
    LANGUAGE_CODE = 'zh_Hans'TIME_ZONE = 'Asia/Bangkok'
    포맷 시간 표시
    USE_L10N = FalseDATETIME_FORMAT = 'Y-m-d H:i:s'DATE_FORMAT = 'Y-m-d'
    지정 static
    STATIC_URL = '/static/'STATICFILES_DIRS = (os.path.join(BASE_DIR,"statics"),)
  • 등록 모델, 사용자 정의 admin
    from app.models import *admin.site.site_header = '서버 요금 연장 정보' \ # 페이지 에 제목 admin. site. site 를 표시 하도록 설정 합 니 다.title = '서버 요금 연장 정보' \ # 페이지 머리 제목 설정
    @ admin. register (TableName) class TNAdmin (admin. ModelAdmin): fields = ('issue', 'start date', 'application', 'result', 'receiver', 'end date', 'memo') \ # 편집 인터페이스 에 표 시 된 필드 list 설정display = ('number', 'issue', 'start date', 'application', 'result', 'receiver', 'end date') \ # 목록 에 표 시 된 필드 searchfields = ('start date',) \ # 검색 표시 줄 empty 추가value_display = '입력 하지 않 음' \ # 빈 필드 를 짧 은 밑줄 list 로 덮어 씁 니 다.per_page = 50 \ # 각 페이지 에 표 시 된 줄 수 ordering = ('- number',) \ # 기본 정렬 필드 설정, - 내림차 listeditable = ['result',] \ # 편집 가능 한 필드 설정 listdisplay_links = ('id', 'caption') \ # 편집 인터페이스 에 들 어 갈 필드 를 설정 합 니 다 datehierarchy = 'start_date '\ # 상세 시간 층 별 선별 listfilter = ('start date', 'end date', 'receiver', 'result') \ # 필터
  • 모델 을 초기 화하 고 슈퍼 사용 자 를 만 듭 니 다.
    python manage.py makemigrationspython manage.py migrate
    python manage.py createsuperuser
  • ORM 이 뭐야?
    ORM, 대상 관계 맵 은 대응 하 는 관계 로 대상 을 대상 으로 프로 그래 밍 언어 에서 서로 다른 유형의 시스템 의 데이터 간 의 전환 을 실현 하 는 데 사용 된다. 다시 말 하면 대상 을 대상 으로 하 는 방식 으로 데이터 베 이 스 를 만 드 는 표 와 삭제, 수정 등 작업 을 하 는 것 이다.
    장점: 1.1 ORM 은 우리 의 유 니 버 설 데이터 베 이 스 를 쉽게 만 들 었 고 빌어먹을 SQL 문 구 를 전혀 고려 하지 않 고 신속하게 개발 했다. 이로써 1.2 는 일부 초보 프로그램 이 sql 문 구 를 쓰 는 데 가 져 온 성능 문 제 를 피 할 수 있다.
    단점: 1.3 성능 이 희생 되 었 지만 현재 의 각종 ORM 프레임 워 크 는 여러 가지 방법 을 시도 하고 있 습 니 다. 예 를 들 어 캐 시, 로드 지연 등 으로 이 문 제 를 줄 이 고 있 습 니 다. 1.4 개별 복잡 한 조회 에 대해 ORM 은 아직도 힘 에 부 치지 않 습 니 다. 이 문 제 를 해결 하기 위해 ORM 은 보통 raw sql 을 쓰 는 것 을 지원 합 니 다.

  • 2. ORM 의 사용
    2.1    
            
             :foreignkey(      )
                          :
                           
                           
                           
    
    2.2     
        #           ,      
        # python manage.py makemigrations
        # python manage.py migrate
        from django.db import models
    
        class   (models.Model):
                = models.    (   )
    
            def __str__(self):      #        ,      
                return self.
    
                    :
                        = models.CharField(max_length=64)
                            CharField           :      
                            IntegerField        :  
                            ForeignKey          :
                            ManyToManyField     :
    
        2.2.1     ,    create   
                create   :
                      .object.create(
                          1=      1,
                          2=      2,
                          3=      3,
                    )
    
                create   :        
                      .object.create(**{"  1":"  1"})
    
                save   :
                      =  (  1="  1")
                      .save()
    
                save   :
                      =  ()
                      .  ="  1"
                      .save()
    
        2.2.3               
                  .objects.filter(  ).deleter()
    
        2.2.3      
                update  :filter        ,   save 
                      .objects.filter(  1,  2).update(  =  )
    
                save  (       ):get        
                       =   .objects.get(  )
                      .  =  
                      .save()
    
        2.2.4      
    
            <1>   
                   = models.  .objects.filter(id=2)[0]  #      id=2 ,   
    
                filter(**kwargs)            :               
    
                all()                       :      
    
                   = models.  .objects.filter(id=2).values("  ")
                #       ,       ,        "  :  "
                # [{"  1":"  1"},{"  2":"  2"}]
    
            <2>        , .filter .all   
                exclude(**kwargs)           :               
    
                order_by(*field)            :       
                #   :      = models.  .objects.order_by("id")
                #   :      = models.  .objects.order_by("-id")
    
                reverse()                   :         
    
                distinct()                  :            
    
                values_list(*field)         : values()  ,        
    
                count()                     :               
    
                first()                     :       
    
                last()                      :        
    
                exists()                    :  QuerySet    ,   True,    False
    
                    :
                      .objects.all()  .filter()        QuerySet(       ),
                            sql,     QuerySet      。
    
                QuerySet  :
                    1.    
                    2.    
                        objs = models.  .objects.all()
    
                        #  
                            for obj in objs:
                                print("obj:",obj)
    
                        #  
                            print(objs[1])
                            print(objs[1:4])
                            print(objs[::-1])
    
    3.   
    
        3.1    (ForeignKey),    1:"   "    2:" ",           ,        
                class     (models.Model):
                         = models.CharField(max_length=30)
                          = models.CharField(max_length=30)
    
                class   (models.Model):
                       = models.CharField(max_length=30)
                        = models.ForeignKey("    ")
                    #     ,ForeignKey,     ,Django        "   _id"
    
                #            ,  
    
                    #        
    
                          .objects.create (
                               = "      "
                               _id = "1"  //     
                        )
    
                    #               
    
                        pub = models.    .objects.filter(id=1)  #          
                              .objects.create (
                                   = "      "
                                    = pub[0]  #     
                            )
    
        3.2    (ManyToManyField)
                  ,          ,            ,         
    
                class   (models.Model):
                       = models.CharField(max_length=30)
                       = models.ManyToManyField("   ")  #         
    
                class    (models.Model):
                        = models.CharField(max_length=64)
    
                     ,   :
                id        _id          _id
                 1         5           4
                 2         5           1
                 3         5           2
                 4         6           1
                 5         6           1
    
                   :
                #           
    
                  1 = models.   .objects.get(id=3)
                  1 = models.   .objects.get(id=4)
    
                   = models.  .objects.filter(id=3)[0]
    
                #         
                      .  .add(  1,  2)
    
                      .  .add(  1)
                      .  .add(  2)
    
                      .  .add(*[  1,  2])
    
                         。       :
                        id        _id          _id
                        1           3           3
                        2           3           4
    
                      :
                class   (models.Model):
                       = models.CharField(max_length=30)
                       = models.ManyToManyField("   ")  #         
    
                class    (models.Model):
                        = models.CharField(max_length=64)
    
                class     (models.Model):
                      = models.ForeignKey(  )
                       = models.ForeignKey(   )
    
                    class Meta:                        #         
                        unique_together=[" ","  "]  #     ,      
    
                       id          _id         _id
                        1           3           3    #           ,                  
                        2           3           3    #           ,                  
                        3           3           4               
    
        3.3    
            OneToOne:      Foreignkey,unqiue=True
    
    4.   
        4.1     
                            ,       
    
            4.1.1     
                #   :           ,       ,       ,         
                #   ,          
                obj = models.  .objects.filter(  ="      ")[0]
                obj.  .         #       ,         
    
            4.1.2     
                #          ,    ,     
                #                    
                obj = models.    .objects.filter(name="     ")
                obj.  _set.all().values("  ")       #    "  _set"         
    
        4.2            
    
            models. 1.objects.filter(id__lt=10,id__gt=1)  #   id  1   10  
            models. 1.objects.filter(id__in=[11,22,33])   #   id  11/22/33   
            models. 1.objects.exclude(id_in=[11,22,33])   #    
    
            models. 1.objects.filter(name__contains="ven")   #  sql       
            models. 1.objects.filter(name__icontains="ven")  # icontains      
    
            models. 1.objects.filter(id__range=[1,2])        #   ,bettwen and
    
            startswith(     )、istartwith、endswith(     )、iendwith
    
        4.3           
            #                   
            models.    .objects.filter(  __  ="      ").vaules("    ").distinct()
    
            #            
            models.  .objects.filter(    __    ="     ").values("  ")
    
            #    ,            
            models.  .objects.filter(  __  ="      ").values("  __    ")
    
        4.4          ,       
    
            from django.db.models import Avg,Min,Sum,Max
    
            Avg,Min,Sum,Max      
    
            <1>     
                              ,      
                aggregate(*args,**kwargs)
    
                #   wangyi            
                      .objects.all().aggregate(Avg('  '))
    
            <2>     
                                 ,            
                annotate(*args,**kwargs) 
    
                #                 
                      .objects.values("   __   ").annotate(Sum("price"))
    
        4.5 F   Q  
    
            4.5.1 F   ,        ,            
                from django.db.models import F,Q
                #       20  
    
                    models.  .objects.all().update(  =F('  ')+20)  #      
    
            4.5.2 Q   ,         
                             ,        ,        ,  and;
                         ,     or    and,  :  a and (b or (d and e))
    
                from django.db.models import F,Q
    
                     ,             :
                            obj = models.  .objects.filter(id=3)[0]     
                            obj = models.  .objects.filter(Q(id=3))[0]
    
                  Q         
    
                    obj = models.  .objects.filter( Q(id=3) | Q(  ="      ") )  #       "|"  or  
    
                    obj = models.  .objects.filter( Q(  __gt=50)  & (Q(id=3) | Q(  ="      ")) )    #     50  (id=3    =        )
    
                    obj = models.  .objects.filter( Q(  __gt=50)  & (Q(id=3) | Q(  ="      ")) ,   ="  " )    #       Q  ,        Q    (  (    50  (id=3    =      )         )
    
    5.   ,      ,          ,        
        class   (models.Model):
                       = models.CharField(max_length=30)
                       = models.ManyToManyField("   ") 
    
                    def __str__(self)
                        return self.            #           str    

    좋은 웹페이지 즐겨찾기