django inheritance

Abstract base classes

在元數(shù)據(jù)中設(shè)置Meta中設(shè)置 abstract=True ,這個model將用于創(chuàng)建任何數(shù)據(jù)表.當(dāng)它被作為基類時.他的字段添加進(jìn)這些子類當(dāng)中,
注意:
1.如果抽象類和基類有相同名稱的字段會產(chǎn)生一個異常.
2.基類不會產(chǎn)生一個數(shù)據(jù)表或者生成一個管理器,也不能被直接實例化調(diào)用.

from django.db import models
class Base(models.Model): 
        m2m = models.ManyToManyField(OtherModel, related_name="%(app_label)s_%(class)s_related")
        class Meta: 
                abstract = True
class ChildA(Base):
       pass
class ChildB(Base): 
        pass

Meta inheritance
django允許聲明各種meta屬性,如果子類沒有聲明,他將自動繼承父類的,也可以繼承然后擴(kuò)展

class Meta(father_class.Meta):
       db_table = 'child_info'

db_table將意味著所有的子類(那些沒有指定自己的Meta)將使用同一數(shù)據(jù)庫石景,這肯定不會是你想要的够掠。

Multi-table inheritanceDjango支持的第二種model繼承是多表繼承,在繼承結(jié)構(gòu)中每個model都是獨立的雅任。都對應(yīng)著自己的數(shù)據(jù)庫表,可以進(jìn)行獨立的查詢等操作黍瞧。繼承關(guān)系實際是子model和每個父model之間的關(guān)系(通過自動創(chuàng)建OneToOneField)

from django.db import model
class Place(models.Model): 
    name = models.CharField(max_length=50) 
    address = models.CharField(max_length=80)
class Restaurant(Place): 
    serves_hot_dogs = models.BooleanField(default=False) 
    serves_pizza = models.BooleanField(default=False)

所有Place的字段都可以在Restaurant中使用,雖然數(shù)據(jù)存放在不同的數(shù)據(jù)表中

Proxy models
當(dāng)使用多表繼承時一個新的數(shù)據(jù)表model會在每一個子類中創(chuàng)建挨决,這是因為子model需要存儲父mdoel不存在的一些數(shù)據(jù)字段。但有時只需要改變model的操作行為脖祈,可能是為了改變默認(rèn)的管理行為或添加新的方法。

這時就應(yīng)該使用代理模式的繼承:創(chuàng)建原始model的代理刷晋。你可以創(chuàng)建一個用于 create, delete 和 update的代理model,使用代理model的時候數(shù)據(jù)將會真實保存。這和使用原始model是一樣的眼虱,所不同的是當(dāng)你改變model操作時,不需要去更改原始的model蒙幻。

代理模式的聲明和正常的繼承聲明方式一樣。你只需要在Meta class 中定義proxy為True就可以了邮破。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末仆救,一起剝皮案震驚了整個濱河市矫渔,隨后出現(xiàn)的幾起案子彤蔽,更是在濱河造成了極大的恐慌庙洼,老刑警劉巖顿痪,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件油够,死亡現(xiàn)場離奇詭異,居然都是意外死亡石咬,警方通過查閱死者的電腦和手機(jī)揩悄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進(jìn)店門鬼悠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人焕窝,你說我怎么就攤上這事蹬挺∷啵” “怎么了巴帮?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵群发,是天一觀的道長。 經(jīng)常有香客問我熟妓,道長,這世上最難降的妖魔是什么起愈? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮抬虽,結(jié)果婚禮上官觅,老公的妹妹穿的比我還像新娘。我一直安慰自己休涤,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布功氨。 她就那樣靜靜地躺著序苏,像睡著了一般捷凄。 火紅的嫁衣襯著肌膚如雪忱详。 梳的紋絲不亂的頭發(fā)上跺涤,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天,我揣著相機(jī)與錄音桶错,去河邊找鬼航唆。 笑死牛曹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的黎比。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼阅虫,長吁一口氣:“原來是場噩夢啊……” “哼不跟!你這毒婦竟也來了颓帝?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤购城,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后虐译,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡漆诽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了厢拭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡供鸠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出楞捂,到底是詐尸還是另有隱情趋厉,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布颤殴,位于F島的核電站觅廓,受9級特大地震影響涵但,放射性物質(zhì)發(fā)生泄漏杈绸。R本人自食惡果不足惜矮瘟,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望澈侠。 院中可真熱鬧,春花似錦哨啃、人聲如沸烧栋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至祝峻,卻和暖如春魔吐,著一層夾襖步出監(jiān)牢的瞬間莱找,已是汗流浹背酬姆。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工奥溺, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谚赎。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像壶唤,于是被迫代替她去往敵國和親雳灵。 傳聞我的和親對象是個殘疾皇子闸盔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Django Model 定義語法 版本:1.7主要來源:https://docs.djangoproject.c...
    羅田閱讀 31,029評論 2 42
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)躲撰,斷路器针贬,智...
    卡卡羅2017閱讀 134,652評論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法拢蛋,類相關(guān)的語法桦他,內(nèi)部類的語法谆棱,繼承相關(guān)的語法快压,異常的語法垃瞧,線程的語...
    子非魚_t_閱讀 31,624評論 18 399
  • 清明雨紛紛的時節(jié)已經(jīng)過去一段時間了,品茶个从、送茶葉的熱度還居高不下脉幢。我不懂茶道嗦锐,不識茶葉的品相貴賤嫌松,但明前茶卻對我別...
    饞饞閱讀 679評論 0 5
  • 關(guān)于《非暴力溝通》第十二章重獲生活熱情 1.為什么許多人難以傾聽和表達(dá)自己需要奕污? 我們的文化傾向把個人需要看作是消...
    思維導(dǎo)圖賀姝琴豬豬閱讀 555評論 0 2