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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Django删除多对多表关系 :

發布時間:2023/12/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Django删除多对多表关系 : 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

刪除多對多表關系 :


# 刪除子表與母表關聯關系,讓小虎不喜歡任何顏色
# 寫法1:
child_obj = Child.objects.get(name="apollo")
colors_obj = Colors.objects.all()
child_obj.favor=''
child_obj.save()
# 寫法2:
child_obj = Child.objects.get(name="apollo")
colors_obj = Colors.objects.all()
child_obj.favor.remove(*colors_obj)
# 寫法3:
child_obj = Child.objects.get(name="apollo")
child_obj.favor.clear()

?

# 刪除母表與子表關聯關系,讓所有人不再喜歡藍色
# 寫法1:
children_obj = Child.objects.all()
colors_obj = Colors.objects.get(colors="藍")
colors_obj.child_set.remove(*children_obj)

拆包變成了反向刪除??
# 寫法2:
colors_obj = Colors.objects.get(colors="藍")
colors_obj.child_set.clear()

?

#刪除子表數據,喜歡藍色的所有人都刪掉
colors_obj = Colors.objects.get(colors="藍")
colors_obj.child_set.all().delete()? #注意有.all()
#刪除所有child
Child.objects.all().delete()

刪除母表數據:
默認情況下,如此例中,刪除紅色,那么子表與顏色表是一對一或外鍵關系的,子表對應數據會自動刪除,
如:紅球,apollo與顏色表是多對多關系的話,不會自動刪除喜歡紅色的人,而是去掉紅色已選.
如果想讓與母表外鍵關聯的子表在刪除外鍵之后依舊可以保留子表數據,需要子表建表時加入以下字段
class Clothes(models.Model):
??? color=ForeignKey("Colors",null=True,on_delete=models.SET_NULL))?

#可為空,如果外鍵被刪后,子表數據此字段置空而不是直接刪除這條數據,同理也可以SET_DEFAULT,需要此字段有默認值

也可以加PROTECT =====》on_delete=models.PROTECT

再來一個身份證對應駕照的例子

class IDCard(models.Model):
??? id_num = models.CharField(max_length=32,unique=True)
??? id_name = models.CharField(max_length=32)

class DriverCard(models.Model):
??? diver_leverl = models.CharField(max_length=16)
??? driver_idcard = models.OneToOneField(IDCard,on_delete=models.PROTECT)

??

總結

以上是生活随笔為你收集整理的Django删除多对多表关系 :的全部內容,希望文章能夠幫你解決所遇到的問題。

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