장고 추상화 기초 클래스

정은경·2021년 2월 10일
0

장고 추상화 기초 클래스

1) 추상화 기초 클래스 정의

추상화 클래스는 claa meta에 abstract에 "True"를 꼭 지정해주어야 한다!

  • tacker.core.models.py
from django.db import models


class TimeStampedModel(models.Model):
    """
    'created'와 'modified' 필드를 자동으로 업데이트해 주는 추상화 기반 클래스 모델.
    """
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True

2) 1에서 정의한 추상화 클래스 상속받기

  • tracker.flavor.models.py
from django.db import models

from tracker.core.models import TimeStampedModel


class Flavor(TimeStampedModel):
    title = models.CharField(max_length=200)

3) 상속받은 클래스의 필드가 실제 생겼는지 확인하기

장고 쉘에서 flavor.models에 있는 "Flavor" 모델에
"TimeStampedModel"에서 상속 받은 'created, modifed' 필드가 있는지 확인해 봤다!
다 있다! 룰루

>>> from tracker.flavor.models import *
>>>
>>> Flavor._meta.get_fields()
(<django.db.models.fields.AutoField: id>, <django.db.models.fields.DateTimeField: created>, <django.db.models.fields.DateTimeField: modified>, <django.db.models.fields.CharField: title>)
>>> 
>>> Flavor._meta.get_field('id')
<django.db.models.fields.AutoField: id>
>>> Flavor._meta.get_field('created')
<django.db.models.fields.DateTimeField: created>
>>> Flavor._meta.get_field('modified')
<django.db.models.fields.DateTimeField: modified>
>>> Flavor._meta.get_field('title')
<django.db.models.fields.CharField: title>
>>>

Model _meta API

모델이름._meta.get_field('필드이름')

https://docs.djangoproject.com/en/3.1/ref/models/meta/

Reference

profile
#의식의흐름 #순간순간 #생각의스냅샷

0개의 댓글