Django를 이용해 DB table을 설계하다가 대부분의 테이블에 created_at, updated_at이 필요하다는 것을 깨닫고 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로 상속할 수 있게한다.
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