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