【Django 2.2文檔系列】Model 外鍵中的on_delete參數用法

場景

咱們用Django的Model時,有時候須要關聯外鍵。關聯外鍵時,參數:on_delete的幾個配置選項究竟是幹嗎的呢,你知道嗎?數據庫

參數介紹

  • models.CASCADE

級聯刪除。Django會模擬SQL約束的行爲,在刪除此條數據時,同事刪除外鍵關聯的對象。
好比:用戶的有一個外鍵關聯的是用戶的健康記錄表,當用戶刪除時,配置了這個參數的健康記錄表中跟這個用戶有關的數據也會被刪除。django

提醒:
級聯刪除不會調用model級行爲,可是會爲全部已刪除對象發送pre_delete和 post_delete信號,有用Django的信號機制的場景,要考慮這個級聯刪除帶來影響。
  • models.PROTECT

防止刪除引用的對象。與上個偏偏相反,是防止關聯數據被刪除。後端

  • models.SET_NULL

設置關聯的外鍵內容爲null。只有設置了null=True時可用。當數據被刪除時,被關聯的外鍵內容被設置爲nullpost

  • models.SET_DEFAULT

將外鍵的值設置爲默認值。外鍵必須設置有默認值 。code

  • models.SET()

將SET()設置的值做爲外鍵的值 ,若是傳遞了callable,則調用它的結果。orm

  • DO_NOTHING

不採起行動。若是後端數據庫有強制關聯操做,這是容易報錯:IntegrityError,除非你在數據庫中手動添加了SQL的ON DELETE約束。對象

歡迎查看個人這個系列的其餘文章:get

  1. django-admin和manage.py的用法
  2. 編寫自定義manage.py 命令
  3. Django組件——forms組件

還有更多內容,請查看Bigyoung小站。it

本文首發於 BigYoung小站
相關文章
相關標籤/搜索