ORM跨表查询总结

一、基于对象的查询-->子查询

1、一对多

正向查询:基于 字段

反向查询:基于 表名__set.all() 注意:表名全部小写

2、多对多

正向查询:基于 字段.all()

反向查询:基于 表名_set.all() 注意:表名全部小写

3、一对一

正向查询:基于 字段

反向查询:基于 表名 注意:表名全部小写

二、基于QuerySet的查询-->连表
1、正向查找: 字段
2、反向查找: 表名

注意:基于QuerySet的查找最重要的是找到基表,filter和values都可以进行跨表查找

query

直接查看ORM对应的SQL语句

三、聚合分组

1、聚合

聚合被称为终止QuerySet函数,返回值是字典

2、分组

a、QuerySet.annotate(),annotate()前面的内容相当于,group by 条件

b、annotate()的返回值是QuerySet 后面加values() 相当于sql语句select 字段

c、annotate()里的内容 聚合函数+连表

Author.objects.values(addr='nj').annotate(a= Count('book')).values(a__gt=2)

 

转载于:https://www.cnblogs.com/wt7018/p/11351846.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值