F、Q表达式,多对多关系

官网解释:

对于模型,F实现了,在不需要将模型字段从数据库导入python内存的情况下,执行数据库的操作。
相反的,django用F表达式生成了  描述数据库层级需要的操作  的SQL表达式。

创建一个包含多对多关系的类
在这里插入图片描述
其中 Article类有一个字段关联到django.contrib.auth.models的User。
执行 makemigrations与migrate后,数据库对于这个类会生成两张表(auth_user表已经生成),
在这里插入图片描述
blogajax_testmany字段
在这里插入图片描述
blogajax_testmany_article字段
在这里插入图片描述
显然表blogajax_testmany_article用于表示这个多对多关系,testmany_id用于表示表bloagajax_testmany的id。

创建Teacher,Student类,Teacher中有字段多多关联到学生
在这里插入图片描述
django会自动创建三张表
在这里插入图片描述
两张表表示数据,另一张表表示关系
添加
在这里插入图片描述

在使用add函数之后,就会保存到数据库中,而不用调用save,django版本2.2.6,python3.6
以下分别从 Teacher和Student实例添加多对多关系
Student对象
在这里插入图片描述
student,对应的该字段是teacher_set,类名_set,而不是 字段名(teach)_set, 添加可以通过如上方式添加

Teacher对象
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
改写Student,添加正整数字段,默认值20

F表达式

在这里插入图片描述

既可以用于单个对象,也可以用于多个对象在这里插入图片描述

Q表达式

filter中的关键字查询,是并AND关系。如果想要更复杂的查询,比如OR,可以用Q表达式.
Q表达式可以用 | 或者 &连接,也可用 ~ 表示非关系。Q表达式要在关键字参数之前。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值