Django 세 모델 상속
1477 단어 Django
부모 클래스 계승은 모델에서 온 것입니다.모델, 그러나 하위 데이터베이스에서 상응하는 데이터 테이블을 생성하지 않으며 부류의 속성 열은 하위 클래스의 데이터 테이블에 저장됩니다
역할:
여러 테이블에 같은 필드가 있을 때, 이 필드를 추상 클래스에 통일적으로 정의할 수 있다
요구 사항:
class BaseModel(models.Model):
creat_time = models.DateTimeField(auto_now_add=True, verbose_name=" ")
update_time = models.DateTimeField(auto_now=True, verbose_name=" ")
is_delete = models.BooleanField(default=False, verbose_name=" ")
class Meta:
abstract = True
다표 상속
모든 모델 클래스는 베이스 데이터베이스에서 상응하는 데이터 테이블 관리 데이터를 생성한다
부모 클래스의 필드는 하위 클래스와 관련된 데이터 테이블에서 중복되지 않습니다
from django import models
class MessageBase(models.Model):
id = models.AutoField()
content = models.CharField(max_length=100)
user_name= models.CharField(max_length=20)
class Moment(MessageBase):
headline = models.CharField(max_length=200)
# Moment id, headline
# ,
삼대리 모델 계승
프록시 모델 중 하위 클래스는 부모 클래스의 데이터만 관리하는 데 사용되며 실제 데이터를 저장하지 않습니다
사용 이유:
하위 클래스의 새로운 기능은 상위 클래스 행위와 기존 코드의 행위에 영향을 주지 않습니다
from django.db import models
class Moment(models.Model):
headline = models.CharField(max_length=200)
user_name = models.CharField(max_legth=20)
pub_date = models.DateField()
class OrderedMoment(Moment):
class Meta:
proxy = True #
ordering = ["-pub_date"] #