摘要:置空模式,刪除的時(shí)候,外鍵字段被設(shè)置為空,前提就是定義該字段的時(shí)候,允許為空。自定義一個(gè)值,該值當(dāng)然只能是對(duì)應(yīng)的實(shí)體
在Django2.0以上的版本中,創(chuàng)建外鍵和一對(duì)一關(guān)系必須定義on_delete參數(shù),我們可以在其源碼中看到相關(guān)信息
class ForeignKey(ForeignObject): """ Provide a many-to-one relation by adding a column to the local model to hold the remote value. By default ForeignKey will target the pk of the remote model but this behavior can be changed by using the ``to_field`` argument. """ # Field flags many_to_many = False many_to_one = True one_to_many = False one_to_one = False rel_class = ManyToOneRel empty_strings_allowed = False default_error_messages = { "invalid": _("%(model)s instance with %(field)s %(value)r does not exist.") } description = _("Foreign Key (type determined by related field)") def __init__(self, to, on_delete, related_name=None, related_query_name=None, limit_choices_to=None, parent_link=False, to_field=None, db_constraint=True, **kwargs):
to:關(guān)聯(lián)的表
on_delete:當(dāng)該表中的某條數(shù)據(jù)刪除后,關(guān)聯(lián)外鍵的操作
related_name:反查參數(shù),設(shè)置后可以在被關(guān)聯(lián)表中通過該字段反查外鍵所在表,默認(rèn):set_表名
to_field:默認(rèn)主鍵,因?yàn)閙ysql只支持主鍵作為外鍵,就算你沒顯式的創(chuàng)建主鍵,Django會(huì)給你自動(dòng)創(chuàng)建,如果你是DB-first,且沒創(chuàng)建主鍵:數(shù)據(jù)庫默認(rèn)使用隱藏字段:DB_ROW_ID作為主鍵
on_delete參數(shù)設(shè)置CASCADE:級(jí)聯(lián)刪除,當(dāng)關(guān)聯(lián)表中的數(shù)據(jù)刪除時(shí),該外鍵也刪除
PROTECT: 保護(hù)模式,如果采用該選項(xiàng),刪除的時(shí)候,會(huì)拋出ProtectedError錯(cuò)誤。
SET_NULL: 置空模式,刪除的時(shí)候,外鍵字段被設(shè)置為空,前提就是blank=True, null=True,定義該字段的時(shí)候,允許為空。
SET_DEFAULT: 設(shè)置默認(rèn)值,刪除的時(shí)候,外鍵字段設(shè)置為默認(rèn)值,所以定義外鍵的時(shí)候注意加上一個(gè)默認(rèn)值。
SET(): 自定義一個(gè)值,該值當(dāng)然只能是對(duì)應(yīng)的實(shí)體
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/45151.html
摘要:本人年開發(fā)經(jīng)驗(yàn),現(xiàn)就職于電信,因工作需要學(xué)習(xí),記錄自己的學(xué)習(xí)記錄。 本人java10年開發(fā)經(jīng)驗(yàn),現(xiàn)就職于電信,因工作需要學(xué)習(xí)python,記錄自己的學(xué)習(xí)記錄。后面也...
摘要:在里寫一個(gè)數(shù)據(jù)庫驅(qū)動(dòng)的應(yīng)用的第一步是定義模型,也就是數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)和附加的其它元數(shù)據(jù)。模型元數(shù)據(jù)是任何不是字段的東西,例如排序選項(xiàng)數(shù)據(jù)庫表名單數(shù)和復(fù)數(shù)名稱和。 Django 框架主要關(guān)注的是模型(Model)、模板(Template)和視圖(Views),稱為MTV模式。 它們各自的職責(zé)如下: 層次 職責(zé) 模型(Model),即數(shù)據(jù)存取層 處理與數(shù)據(jù)相關(guān)的所有事務(wù): 如何存取...
摘要:本文中討論的好友列表模型設(shè)計(jì)如下聊天用戶聊天用戶好友分組好友分組,備注信息,備注信息添加好友時(shí)間更新分組時(shí)間好友來源即和互為好友,在數(shù)據(jù)庫中只會(huì)保存一條記錄,這樣節(jié)省磁盤空間。 本文中討論的好友列表模型設(shè)計(jì)如下: user_id = models.ForeignKey(ChatUserInfo, to_field=chat_id, on_delete=models.DO_NOTHING...
摘要:本文中討論的好友列表模型設(shè)計(jì)如下聊天用戶聊天用戶好友分組好友分組,備注信息,備注信息添加好友時(shí)間更新分組時(shí)間好友來源即和互為好友,在數(shù)據(jù)庫中只會(huì)保存一條記錄,這樣節(jié)省磁盤空間。 本文中討論的好友列表模型設(shè)計(jì)如下: user_id = models.ForeignKey(ChatUserInfo, to_field=chat_id, on_delete=models.DO_NOTHING...
摘要:學(xué)習(xí)小組是由我發(fā)起的一個(gè)促進(jìn)新手互相學(xué)習(xí)互相幫助的組織。當(dāng)然如果你不喜歡英文,可以看我們的中文翻譯版本入門教程中文翻譯版。如果模板文件中有如下代碼那么渲染時(shí)就會(huì)循環(huán)渲染篇文章,并且也會(huì)被存儲(chǔ)在數(shù)據(jù)庫中文章的標(biāo)題取代。 本教程內(nèi)容已過時(shí),更新版教程請(qǐng)?jiān)L問: django 博客開發(fā)入門教程。 本節(jié)是 Django Blog 項(xiàng)目的開篇,是?Django 學(xué)習(xí)小組的集體學(xué)習(xí)成果。Django...
閱讀 3070·2021-11-22 13:54
閱讀 834·2021-11-04 16:08
閱讀 4460·2021-10-11 11:09
閱讀 3597·2021-09-22 16:05
閱讀 910·2019-08-30 15:54
閱讀 386·2019-08-30 15:44
閱讀 593·2019-08-30 14:05
閱讀 1014·2019-08-30 12:46