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"] #    

좋은 웹페이지 즐겨찾기