場景 我們用Django的Model時,有時候需要關聯外鍵。關聯外鍵時,參數: 的幾個配置選項到底是幹嘛的呢,你知道嗎? 參數介紹 級聯刪除。Django會模擬SQL約束的行為,在刪除此條數據時,同事刪除外鍵關聯的對象。 比如:用戶的有一個外鍵關聯的是用戶的健康記錄表,當用戶刪除時,配置了這個參數的 ...
場景
我們用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
約束。
歡迎查看我的這個系列的其他文章:
還有更多內容,請查看Bigyoung小站。
本文首發於BigYoung小站