摘要:置空模式,刪除的時候,外鍵字段被設置為空,前提就是定義該字段的時候,允許為空。自定義一個值,該值當然只能是對應的實體
在Django2.0以上的版本中,創建外鍵和一對一關系必須定義on_delete參數,我們可以在其源碼中看到相關信息
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:關聯的表
on_delete:當該表中的某條數據刪除后,關聯外鍵的操作
related_name:反查參數,設置后可以在被關聯表中通過該字段反查外鍵所在表,默認:set_表名
to_field:默認主鍵,因為mysql只支持主鍵作為外鍵,就算你沒顯式的創建主鍵,Django會給你自動創建,如果你是DB-first,且沒創建主鍵:數據庫默認使用隱藏字段:DB_ROW_ID作為主鍵
on_delete參數設置CASCADE:級聯刪除,當關聯表中的數據刪除時,該外鍵也刪除
PROTECT: 保護模式,如果采用該選項,刪除的時候,會拋出ProtectedError錯誤。
SET_NULL: 置空模式,刪除的時候,外鍵字段被設置為空,前提就是blank=True, null=True,定義該字段的時候,允許為空。
SET_DEFAULT: 設置默認值,刪除的時候,外鍵字段設置為默認值,所以定義外鍵的時候注意加上一個默認值。
SET(): 自定義一個值,該值當然只能是對應的實體
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/45151.html
摘要:本人年開發經驗,現就職于電信,因工作需要學習,記錄自己的學習記錄。 本人java10年開發經驗,現就職于電信,因工作需要學習python,記錄自己的學習記錄。后面也...
摘要:在里寫一個數據庫驅動的應用的第一步是定義模型,也就是數據庫結構設計和附加的其它元數據。模型元數據是任何不是字段的東西,例如排序選項數據庫表名單數和復數名稱和。 Django 框架主要關注的是模型(Model)、模板(Template)和視圖(Views),稱為MTV模式。 它們各自的職責如下: 層次 職責 模型(Model),即數據存取層 處理與數據相關的所有事務: 如何存取...
摘要:本文中討論的好友列表模型設計如下聊天用戶聊天用戶好友分組好友分組,備注信息,備注信息添加好友時間更新分組時間好友來源即和互為好友,在數據庫中只會保存一條記錄,這樣節省磁盤空間。 本文中討論的好友列表模型設計如下: user_id = models.ForeignKey(ChatUserInfo, to_field=chat_id, on_delete=models.DO_NOTHING...
摘要:本文中討論的好友列表模型設計如下聊天用戶聊天用戶好友分組好友分組,備注信息,備注信息添加好友時間更新分組時間好友來源即和互為好友,在數據庫中只會保存一條記錄,這樣節省磁盤空間。 本文中討論的好友列表模型設計如下: user_id = models.ForeignKey(ChatUserInfo, to_field=chat_id, on_delete=models.DO_NOTHING...
摘要:學習小組是由我發起的一個促進新手互相學習互相幫助的組織。當然如果你不喜歡英文,可以看我們的中文翻譯版本入門教程中文翻譯版。如果模板文件中有如下代碼那么渲染時就會循環渲染篇文章,并且也會被存儲在數據庫中文章的標題取代。 本教程內容已過時,更新版教程請訪問: django 博客開發入門教程。 本節是 Django Blog 項目的開篇,是?Django 學習小組的集體學習成果。Django...
閱讀 3091·2021-11-22 13:54
閱讀 842·2021-11-04 16:08
閱讀 4542·2021-10-11 11:09
閱讀 3605·2021-09-22 16:05
閱讀 936·2019-08-30 15:54
閱讀 397·2019-08-30 15:44
閱讀 603·2019-08-30 14:05
閱讀 1025·2019-08-30 12:46