노마드코더 에어비앤비 클론코딩 의 내용을 다루고 있음 (광고 아님)
django 모델을 작성하다 보면 생성일(created date), 수정일(updated date) 등 공통 칼럼을 작성해야할 때가 있음
그럴 때 모델마다 매번 작성하는 게 아니라 공통 칼럼만 작성한 모델 작성 후 다른 모델에서 상속하는 유용한 방법이 있음
1. common 이라는 이름의 신규 app 생성
python manage.py startapp common
2. common app Model을 작성
from django.db import models
# Create your models here.
class CommonModel(models.Model):
"""Common Model Definition"""
created_at = models.DateTimeField(
auto_now_add=True,
)
updated_at = models.DateTimeField(
auto_now=True,
)
class Meta:
abstract = True
Meta 클래스에 abstract 를 True 로 하면 DB에는 Migration 이 되지 않고 다른 모델에서 상속을 받아 사용할 수 있도록 설정됨
3. 다른 모델에서 상속
- common model 에서 CommonModel 클래스를 불러와
- 기존에 models.Model 대신 CommonModel 을 상속하면 created_at, updated_at 을 사용할 수 있음
from django.db import models
from common.models import CommonModel
# Create your models here.
class Review(CommonModel):
user = models.ForeignKey(
"users.User",
on_delete=models.CASCADE,
)
room = models.ForeignKey(
"rooms.Room",
on_delete=models.CASCADE,
null=True,
blank=True,
)
experience = models.ForeignKey(
"experiences.Experience",
on_delete=models.CASCADE,
null=True,
blank=True,
)
payload = models.TextField()
rating = models.PositiveIntegerField()
def __str__(self):
return f"{self.user} / {self.rating}"
'개발하면서적는글' 카테고리의 다른 글
[django/python] Serializer 필요한 이유 (0) | 2022.10.15 |
---|---|
노마드코더 에어비앤비 클론코딩 중간 후기(25% 완료) (0) | 2022.10.03 |
[django] 에어비앤비 클론코딩 모델 복습 1 (0) | 2022.10.01 |
[django] model migration 에러 해결 (0) | 2022.03.21 |
[django] 용어사전 만들기(1) (0) | 2022.03.20 |
댓글