YUYANE

Django / Meta Class & Abstract Base Class 본문

Framework/DJANGO

Django / Meta Class & Abstract Base Class

YUYA 2021. 2. 23. 15:18

Meta Class

 

Model metadata는 모델에서 필드가 아닌 것을 가리키며 Meta class를 통해 구현된다.

필수가 아닌 옵션으로 아래 링크에서 목록을 확인할 수 있다.

docs.djangoproject.com/ko/3.1/ref/models/options/

 

 

Abstract Base Class

 

- 여러가지 모델에서 공통으로 사용되는 정보가 있을 때 유용한 클래스

- 클래스의 Meta클래스에서 'abstract=True'라고 적음으로써 정의(abstract의 default 값은 False)

- 데이터베이스 테이블 생성에는 사용되지 않으나, 다른 클래스가 상속할 경우에 해당 크래스(child class)의 필드로 추가된다. 

- manager 를 가지지 않고, 초기화되거나 직접적으로 저장될 수 없다.

- 코드 사용 예시

  AbstractItem 클래스를 상속받은 RoomType 클래스는 한 가지 필드(name)를 가진다.

class AbstractItem(core_models.TimeStampedModel):

    """ Abstract Item """

    name = models.CharField(max_length=88)

    class Meta:
        abstract = True
        
        
class RoomType(AbstractItem):

    """ RoomType Model Definition """
    class Meta:
        verbose_name_plural = "Room Types"
        ordering = ['name']

 

 

 

 

 

 

참조

nomadcoders.co/airbnb-clone/nomadcoders.co/airbnb-clone/lobby

docs.djangoproject.com/en/3.1/topics/db/models/

'Framework > DJANGO' 카테고리의 다른 글

Django / MEDIA_ROOT, MEDIA_URL  (0) 2021.02.24
Django / Managers와 QuerySet (related_name)  (0) 2021.02.24
Django / ModelAdmin  (0) 2021.02.23
Django / ForeignKey 와 ManyToManyField  (0) 2021.02.23
Django / Model Field  (0) 2021.02.23
Comments