日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Django从理论到实战(part32)--外键删除

發布時間:2023/12/19 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django从理论到实战(part32)--外键删除 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

學習筆記,僅供參考,有錯必糾
參考自:Django打造大型企業官網–Huang Y;


外鍵刪除


在學習外鍵刪除之前,我們先學習一下外鍵


外鍵


比如,我們有一個User和一個Article兩個模型,User可以有多個Article,Article只能有一個User,并且通過外鍵進行引用:

class User(models.Model):username = models.CharField(max_length=20)password = models.CharField(max_length=100)class Article(models.Model):title = models.CharField(max_length=100)content = models.TextField()author = models.ForeignKey("User",on_delete=models.CASCADE)

注意!ForeignKey類定義為class ForeignKey(to,on_delete,**options),第一個參數是指外鍵關聯的模型,第二個參數是指定外鍵關聯的模型數據被刪除時,該模型的處理方式。


外鍵刪除操作


如果一個模型使用了外鍵,那么在關聯的那個模型數據被刪掉后,該模型中應該采取什么樣的操作,這可以通過on_delete來指定,可以指定的類型如下:

  • CASCADE:級聯操作。如果外鍵對應的那條數據被刪除了,那么這條數據也會被刪除。
  • PROTECT:受保護。即只要這條數據引用了外鍵的那條數據,那么就不能刪除外鍵的那條數據。
  • SET_NULL:設置為空。如果外鍵的那條數據被刪除了,那么在本條數據上就將這個字段設置為空。如果設置這個選項,前提是要指定這個字段可以為空。
  • SET_DEFAULT:設置默認值。如果外鍵的那條數據被刪除了,那么本條數據上就將這個字段設置為默認值。如果設置這個選項,前提是要指定這個字段一個默認值。
  • SET():如果外鍵的那條數據被刪除了。那么將會獲取SET函數中的值來作為這個外鍵的值。SET函數可以接收一個可以調用的對象(比如函數或者方法),如果是可以調用的對象,那么會將這個對象調用后的結果作為值返回回去。
  • DO_NOTHING:不采取任何行為。一切全看數據庫級別的約束。
  • 總結

    以上是生活随笔為你收集整理的Django从理论到实战(part32)--外键删除的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。