咱們用Django的Model時,有時候須要關聯外鍵。關聯外鍵時,參數:on_delete
的幾個配置選項究竟是幹嗎的呢,你知道嗎?數據庫
models.CASCADE
級聯刪除。Django會模擬SQL約束的行爲,在刪除此條數據時,同事刪除外鍵關聯的對象。
好比:用戶的有一個外鍵關聯的是用戶的健康記錄表,當用戶刪除時,配置了這個參數的健康記錄表中跟這個用戶有關的數據也會被刪除。django
提醒:
級聯刪除不會調用model級行爲,可是會爲全部已刪除對象發送pre_delete和 post_delete信號,有用Django的信號機制的場景,要考慮這個級聯刪除帶來影響。
models.PROTECT
防止刪除引用的對象。與上個偏偏相反,是防止關聯數據被刪除。後端
models.SET_NULL
設置關聯的外鍵內容爲null
。只有設置了null=True
時可用。當數據被刪除時,被關聯的外鍵內容被設置爲null
。post
models.SET_DEFAULT
將外鍵的值設置爲默認值。外鍵必須設置有默認值 。code
models.SET()
將SET()設置的值做爲外鍵的值 ,若是傳遞了callable,則調用它的結果。orm
DO_NOTHING
不採起行動。若是後端數據庫有強制關聯操做,這是容易報錯:IntegrityError
,除非你在數據庫中手動添加了SQL的ON DELETE
約束。對象
歡迎查看個人這個系列的其餘文章:get
還有更多內容,請查看Bigyoung小站。it
本文首發於 BigYoung小站