Django ORM 级联删除
生活随笔
收集整理的這篇文章主要介紹了
Django ORM 级联删除
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在一對多關系中,例如主機對應多個role,每個role對應1個主機,
當刪除了某個主機時候,發現對應的role也被刪除了,于是查了手冊,應該如下寫:
class Host(models.Model): hostname = models.CharField(max_length=20,primary_key=True, blank=False) static_ip = models.CharField(max_length=20,unique = True) class CCRole(models.Model): name = models.CharField(max_length = 20,primary_key = True) host = models.ForeignKey(Host,null=True,blank=True,on_delete=models.SET_NULL)給ForeignKey增加屬性,
?
on_delete=models.SET_NULL
即可。
該屬性還有其他值可選:
CASCADE: 默認的,級聯刪除
PROTECT: 通過拋出django.db.models.ProtectedErrordjango.db.models.ProtectedError錯誤來阻止刪除關聯的對象?
SET_NULL: 設置ForeignKey 為 null; 這個只有設置了null 為 True的情況才能用
SET_DEFAULT: 設置 ForeignKey 為默認值; 默認值必須預先設置
SET(): 設置為某個方法返回的值
DO_NOTHING: 什么都不做,如果數據庫設置必須關聯則會報IntegrityError錯
轉載于:https://www.cnblogs.com/sunkai1993/p/7472694.html
總結
以上是生活随笔為你收集整理的Django ORM 级联删除的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql数据库的打开和关闭
- 下一篇: 安装nginx+ngx_lua支持WAF