Django TimeStampedModel 상속

On a regular basis·2021년 11월 17일
0

django에서 models에서 데이터 생성 시간, 업데이트 시간을 기록하기 위해 create_at, updated_at 필드를 설정해 주는 경우가 자주 있었다. 이때 TimeStampedModel에 한 번만 필드를 지정해놓고 상속을 받아서 사용하면 정말 편하다. 두 가지 필드를 해당 모델들에 추가할 필요가 없고, 추가하지 않아서 발생하는 문제들을 방지할 수 있기 때문이다.

✍️ core/models.py (core 앱)

from django.db import models

class TimeStampedModel(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True
  • auto_now_add=True
    model이 새로 만들어질 때 시간을 넣어줌
  • auto_now=True
    데이터가 수정될 때마다 시간이 업데이트 됨
  • class Meta: abstract = True
    해당 클래스를 추상화 기초 클래스로 선언한다는 의미로 장고에서 마이그레이션을 실행할 때 timestampdmodel에 대한 테이블이 생성되지 않는다.(Abstract Class이기 때문에 데이터베이스와 연결안됨!)
✍️ question/models.py (question 앱)

from django.db import models

from core.models import TimeStampedModel

class Comment(TimeStampedModel):
  • Comment 모델은 created_at, updated_at 필드를 따로 지정하지 않아도 TimeStampModel을 상속 받았기 때문에 데이터가 생성될 때, 수정될 때의 시간이 기록된다.
profile
개발 기록

0개의 댓글