父類繼承來自model.model, 但不會在底層資料庫生成相應的資料表,父類的屬性列儲存在其子類的資料表中
作用:多個表若有相同的字段時,可以將這些字段統一定義在抽象類中
要求:
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"] #預設排序
C 三種繼承
1 公有 私有 受保護繼承 class b public a class b public a class b protected a 繼承方式 成員型別 public protected private public public protected 無法繼承 protected protecte...
三種繼承方式
派生類繼承了基類的全部資料成員和除了建構函式,析構函式之外的全部資料成員,但是這些成員的訪問屬性在派生的過程中是可以調整的。從基類繼承的成員,其訪問屬性由繼承方式控制。類的公有繼承 當繼承方式為公有繼承時,基類的公有成員和保護成員的訪問屬性在派生類中不變,而基類的私有成員不可直接訪問。類的私有繼承 ...
三種繼承表
乙個子類一張表 並與主類 父類 共享主表 這種關係中,將父類單獨對映到一張主表,而為子類分別單獨設立一張子表,子表中只包含子類所擴充套件的屬性,同時,子類和父類通過關係型資料庫的外來鍵關聯 name hibernate.belle.animal table t animal name id clas...