장고 모델에서 추상 모델 클래스(Abstract
속성)을 사용하면, 다른 클래스 모델에서 이를 상속받아 활용할 수 있습니다. 추상 모델 클래스는 자체적인 데이터베이스 테이블을 생성하지 않으며, 상속받는 클래스의 테이블에 함께 추가됩니다.
추상 모델 클래스 생성
추상 모델 클래스는 데이터베이스의 생성 시각이나 수정 시각과 같이 여러 테이블에서 공통적으로 사용되는 내용을 상속시키고자 할 때 유용할 수 있습니다. 다음과 같이 Base
모델을 만들어 추상 모델 클래스로 지정할 수 있습니다.
from django.db import models
class Base(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
추상 모델 클래스 사용
아래는 게시글 포스팅을 위해 생성한 모델인데요. 위의 Base
모델과 동일한 생성 및 업데이트 시간 테이블이 추가되어 있는 것을 볼 수 있습니다.
class Posting(models.Model):
user = models.ForeignKey('users.User', on_delete=models.CASCADE, related_name='posting_user')
image_url = models.URLField()
content = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
db_table = 'postings'
이 부분을 추상화 모델을 사용하면 다음과 같이 간략하게 표현할 수 있습니다.
class Posting(Base):
user = models.ForeignKey('users.User', on_delete=models.CASCADE, related_name='posting_user')
image_url = models.URLField()
content = models.TextField()
class Meta:
db_table = 'postings'
이렇게 하면 Base
모델 클래스를 상속 받게 되며, Posting
테이블에는 자동으로 생성 및 업데이트 시간 추가 테이블이 생성됩니다.
반응형
'Django' 카테고리의 다른 글
장고, 파이썬 csv 파일 처리 방법 (0) | 2022.02.01 |
---|---|
장고 프론트엔드와 통신 방법: HTTP POST, GET request 처리하기 (0) | 2022.01.28 |
장고 암호화 인증 인가 처리: bcrypt, JWT 사용 방법 (0) | 2022.01.19 |
장고 HTTP 리퀘스트 유효성 검사 및 에러 메시지 작성 방법 (0) | 2022.01.16 |
장고 데이터 모델 작성과 CRUD 테스트 방법 (0) | 2022.01.11 |