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的所有人

 

转载于:https://www.cnblogs.com/apollo1616/articles/9992978.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值