모델 상속을 통한 공통 필드 구현

guava·2022년 1월 4일
0

파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 강의를 듣고 정리한 글입니다.

장고에서는 모델 상속을 통해 공통 필드를 부모 클래스에만 구현할 수 있다.

이는 실제 데이터베이스 테이블 생성 시 별도의 외래키로 연결되는 것이 아니다. 모델에서만 상속관계를 갖고 있고 실제 테이블은 모두 해당 컬럼을 가지고 있게 된다.

모델 정의


부모 모델 정의

부모 모델이 created_at, updated_at 필드를 구현한다.

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

    class Meta:
        abstract = True  # 메타속성에서 반드시 abstract를 True로 지정해줘야 한다.

부모 모델 상속

자식 모델에서 부모 모델을 상속 받는다.

class Post(BaseModel):
    # ...

데이터베이스 확인

실제로는 부모 모델에 대한 테이블이 생성되는 것이 아니다. 아래 그림처럼 자식 모델에 컬럼이 생성된다.

0개의 댓글