場景
我們用Django的Model時,有時候需要關聯外鍵,關聯外鍵時,引數:on_delete的幾個配置選項到底是干嘛的呢,你知道嗎?
引數介紹
models.CASCADE
級聯洗掉,Django會模擬SQL約束的行為,在洗掉此條資料時,同事洗掉外鍵關聯的物件,
比如:用戶的有一個外鍵關聯的是用戶的健康記錄表,當用戶洗掉時,配置了這個引數的健康記錄表中跟這個用戶有關的資料也會被洗掉,
提醒:
級聯洗掉不會呼叫model級行為,但是會為所有已洗掉物件發送pre_delete和 post_delete信號,有用Django的信號機制的場景,要考慮這個級聯洗掉帶來影響,
models.PROTECT
防止洗掉參考的物件,與上個恰恰相反,是防止關聯資料被洗掉,
models.SET_NULL
設定關聯的外鍵內容為null,只有設定了null=True時可用,當資料被洗掉時,被關聯的外鍵內容被設定為null,
models.SET_DEFAULT
將外鍵的值設定為默認值,外鍵必須設定有默認值 ,
-
models.SET()
將SET()設定的值作為外鍵的值 ,如果傳遞了callable,則呼叫它的結果, -
DO_NOTHING
不采取行動,如果后端資料庫有強制關聯操作,這是容易報錯:IntegrityError,除非你在資料庫中手動添加了SQL的ON DELETE約束,
歡迎查看我的這個系列的其他文章:
- django-admin和manage.py的用法
- 撰寫自定義manage.py 命令
- Django組件——forms組件
還有更多內容,請查看Bigyoung小站,
本文首發于BigYoung小站
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/152389.html
標籤:Python
