Django, DRF 상속 model 적용하기

일단 해볼게·2022년 10월 2일
0

Django

목록 보기
1/1

Django를 이용해 DB table을 설계하다가 대부분의 테이블에 created_at, updated_at이 필요하다는 것을 깨닫고 Basemodel을 만들어 적용시켰다.

1. BaseModel 만들기

class BaseModel(models.Model):  # 수정시간, 생성시간 모델
    created_at = models.DateTimeField(default=datetime.now)  # 해당 레코드 생성시 현재 시간 자동저장
    updated_at = models.DateTimeField(auto_now=True)  # 해당 레코드 갱신시 현재 시간 자동저장

    class Meta:
        abstract = True  # 상속

models.py에서 BaseModel을 만들고 abstract = True로 상속할 수 있게한다.

2. 모델을 만들고 BaseModel을 적용시킨다.

class OriginImage(BaseModel):
    origin_id = models.AutoField(primary_key=True)  # pk
    user_id = models.ForeignKey(User, on_delete=models.CASCADE, null=False)  # fk
    is_deleted = models.BooleanField(null=False, default=False)
    image_url = models.CharField(max_length=255, null=False, default='')
    uuid = models.CharField(null=False, max_length=100, default='')

    def __str__(self):
        origin_id = str(self.origin_id)
        return origin_id
class Style(BaseModel):
    style = models.AutoField(primary_key=True)  # pk

    def __str__(self):
        style = str(self.style)
        return style

이렇게 모델을 짜면 모든 클래스에 created_at, updated_at을 넣지 않아도 적용된다 !

참고

https://stackoverflow.com/questions/31647490/django-how-to-create-custom-base-model

profile
시도하고 More Do하는 백엔드 개발자입니다.

0개의 댓글