당신은 멋쟁이, 우리는 장고쟁이~

0%

Django Models 12편 - Meta Options

Models - Meta Options


Metadata

데이터의 집합체로 다른 데이터에 대한 설명과 정보를 제공합니다


모델에 metadata 를 부여할수 있습니다. 클래스 안에 Meta 클래스를 사용해서 부여할수 있습니다.


아래 예시와 같이 모델 클래스 안에 부가적으로, Meta 클래스를 넣어서 metadata 를 넣을수 있습니다.


1
2
3
4
5
6
7
8
9
from django.db import models 

class Ox(models.Model):
horn_length = models.IntegerField()

# 아래와 같이 Ox 모델 클래스 안쪽에 Meta 클래스를 넣어서 metadata 를 부여 할수 있습니다
class Meta:
ordering = ["horn_length"]
verbose_name_plural = "oxen"

필드가 아닌 무엇이든, 모델의 메타데이터가 될수 있습니다.


필드는, 메타 데이터가 될수 없습니.



정렬 옵션인 ordering,

데이터 베이스 테이블명, db_table

혹은 사람이 읽기 편한 단수와 복수 이름들인, verbose_name, verbose_name_plural

이런것들이 Meta 클래스안에 정의 될수 있습니다.


모델에 대한 class Meta 적용은 전적으로 선택 사항입니다.


Meta Option 에 가능한 모든 옵션들에 대해서는, model option reference 문서에서 보면 됩니다.


Meta option 리스트


메타 옵션에는 아래와 같은 항목들이 존재합니다.

모든 리스트를 확인하고 싶다면, https://docs.djangoproject.com/en/3.0/ref/models/options/


링크를 확인 하면 됩니다.

Meta Options Function Remarks
abstract 모델이 abstract base class 가 됩니다 abstract = True
app_label 모델이 INSTALLED_APPS 밖에 있는 어플리케이션에 존재할때에 선언합니다 app_label = myapp
base_manager_name 메니저의 속성 이름을 지정합니다. 예를들면, objects
db_table 해당 모델을 위한 데이터베이스 테이블 명을 지정합니다 db_table = 'music_album'
db_tablespace 데이터베이스 테이블 스페이스의 이름
default_manager_name 해당 모델을 위해 사용할 메니저의 이름을 지정합니다
default_related_name 관련된 객체에서 역으로 접근할 이름을 지정합니다. 기본값은, 모델명_set 입니다
get_latest_by 보편적으로 ,DateField, DateTimeField 혹은 IntegerField 같은 모델명에 사용합니다. get_latest_by = “order_date”, get_latest_by = [‘-priority’, ‘order_date’]