# 添加子表關聯關系, # 添加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的所有人