Django Model에서의 Meta 클래스

Meta

Python에서 'Meta'클래스는 일반적으로 Django 프레임워크에서 models, forms, serializers, views 와 같은 클래스에 대한 추가 정보를 제공하는 데 사용합니다.
Meta 클래스는 Django 클래스에 대한 다양한 옵션과 구성을 지정하는 방법입니다.

Model에서의 Meta 클래스

Model 클래스에서 Meta 클래스는 다양한 방법으로 모델의 동작을 지정하는데 사용됩니다.
Model 클래스에서 Meta 클래스에서 주로 사용되는 옵션은 아래와 같습니다.

  • 'db_table' : 모델에 사용할 DB 테이블 이름을 지정합니다. 지정하지 않으면 Django는 앱 이름과 모델 이름을 기반으로 테이블 이름을 자동으로 생성합니다.
  • 'ordering' : QuerySet에 대한 기본 순서를 지정합니다. 예를 들어 아래의 코드는 'created_at' 필드를 기준으로 QuerySet를 내림차순으로 정렬합니다.
    ordering = ['-created_at']
  • 'unique_together' : 특정 필드 조합에 unique 제약 조건을 지정합니다. 예를 들어 아래의 코드처럼 'first_name'과 'last_name'가 모두 같지 않도록 unique 제약 조건을 지정할 수 있습니다. 즉, 두 명의 사용자가 동일한 '성과 이름 조합'을 가질 수 없도록 합니다. 다만, Django에서는 이 'unique_together' 방식을 제거하고 아래서 설명할 'UniqueConstraint' 방식을 권장합니다.
    unique_together = [
      ['first_name'],
      ['last_name'],
    ]
  • 'UniqueConstraint' : Django 3.2부터 도입된 unique_together 옵션보다 더 유연한 방식의 메소드입니다. 'UniqueConstraint'에 관련한 글은 아래에 첨부하였습니다.
    class Meta:
      constraints = [
          models.UniqueConstraint(
              fields=[
                  'first_name',
                  'last_name',
              ], 
              name = 'unique_fields',
          ),
      ]
     
 

UniqueConstraint 사용 예시

UniqueConstraint에 대한 설명과 django Model클래스의 Meta 클래스에 대한 설명은 아래의 글을 통해 확인할 수 있습니다. https://yesaroun.tistory.com/entry/Django-Model에서의-Meta-클래스 UniqueConstraint 사용 예시 1. T

yesaroun.tistory.com

 

 


부족하거나 잘못된 내용이 있을 경우 댓글 달아주시면 감사하겠습니다.

이 글에 부족한 부분이 존재할 경우 추후에 수정될 수 있습니다.