Django Model Meta

·2022년 6월 21일
0
post-thumbnail

indexing

  • 개요

    • Model의 related field, primary key에 대해서는 자동으로 index가 생성된다.
    • 이외에 model을 쿼리할 때 자주 사용되는 field인 경우 index 생성을 고려해보는 것이 좋다
  • class Meta 내에 models.Index로 index를 생성하고자 하는 field와 field 조합에 대해 설정할 수 있다. DB에 설정될 index의 이름도 설정할 수 있다.

    • class Customer(models.Model):
        first_name = models.CharField(max_length=100)
        last_name = models.CharField(max_length=100)
      
        class Meta:
            indexes = [
                models.Index(fields=['last_name', 'first_name']),
                models.Index(fields=['first_name'], name='first_name_idx'),
            ]
    • multi column index는 index 설정 순서를 따라야 index가 적용된다.

      • e.g. `Customer.objects.filter(Q(first_name=~)&Q(last_name=~))은 index가 적용되지 않는다.

unique_together

  • field 하나에 대한 유일성이 아닌 field의 조합에 대해 유일성이 필요한 경우
  • 하나의 게시물에 사용자당 한 번의 좋아요를 누를 수 있는 경우

ordering

  • Model.objects.first()Model.objects.all()등에 배열될 object의 순서를 설정
  • ascending order: ['{field_name}']
  • descending order: ['-{field_name}']

abstarct

  • 추상 모델 클래스를 선언하는 경우 True를 설정해줘야 한다.
  • Abstract Model을 상속받은 경우 자동으로 False로 설정된다.
profile
Ben

0개의 댓글