DjangoORM增加add()修改update()多對多關系 表名小寫_set


# 添加子表關聯關系, # 添加apollo並讓他喜歡所有顏色
# 寫法1:子表對象.子表多對多字段.add(*QuerySet對象)
    # 如果是已有用戶,使用.get()
    child_obj = Child.objects.create(name="apollo")
    # 創建顏色表的所有顏色QuerySet對象
    colors_obj = Colors.objects.all()
    # 添加對應關系,將apollo和所有顏色進行關聯,
    child_obj.favor.add(*colors_obj)
# 寫法2:
    colors_obj = Colors.objects.all()
    child_obj = Child.objects.get(name="apollo")    
    child_obj.favor=colors_obj
    child_obj.save()
    
# 讓apollo喜歡黃色和藍色
    child_obj = Child.objects.get(name="apollo")
    # models默認只能用這種方式得到並集,如需更復雜的過濾邏輯,需使用模塊Q
    colors_obj = Colors.objects.filter(colors__in=["",""])
    # 清空小虎已經喜歡的顏色
    child_obj.favor.clear()
    # add是追加模式,如果當前小虎已經喜歡綠色,那么執行后,小虎會額外喜歡藍,黃
    child_obj.favor.add(*colors_obj)
    
# 讓apollo喜歡綠色
    child_obj = Child.objects.get(name="apollo")
    colors_obj = Colors.objects.get(colors="")
    child_obj.favor.clear()
    # 此處沒有*
    child_obj.favor.add(colors_obj)


# 添加母表關聯關系
# 讓喜歡藍色的人里添加apollo,可以用上邊的方法,一個效果,讓小虎喜歡藍色,下邊介紹反向插入(從母表入手)的寫法
    # 寫法:母表對象.子表名小寫_set.add(子表對象)
    child_obj = Child.objects.get(name="apollo")
    colors_obj = Colors.objects.get(colors="")
    colors_obj.child_set.add(child_obj)

# 讓所有人都喜歡藍色
    children_obj = Child.objects.all()
    colors_obj = Colors.objects.get(colors="")
    colors_obj.child_set.add(*children_obj)
# 關於_set寫法,是否已經有些暈了,究竟什么時候使用_set,
# 簡單記憶,只有子表才有"子表名小寫_set"的寫法,得到的是一個QuerySet集合,后邊可以接.add(),.remove(),.update(),.delete(),.clear()
# 另外,colors_obj.child_set.clear()是讓所有人喜歡的顏色里去掉藍色,colors_obj.child_set.all().delete()是刪除.child_set的所有人

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM