Django的mode的分组查询和聚合查询和F查询和Q查询
1、聚合查询
# 聚合函数aggregate,求指定字段的最大值,最小值,平均值,和的值,方法如下from django.db.models import Avgfrom django.db.models import Sumfrom django.db.models import Maxfrom django.db.models import Minobj = models.book.objects.all().aggregate(Avg("Book_price"))print(obj)obj = models.book.objects.all().aggregate(Sum("Book_price"))print(obj)obj = models.book.objects.all().aggregate(Max("Book_price"))print(obj)obj = models.book.objects.all().aggregate(Min("Book_price"))print(obj)
2、分组查询
# 分组查询# 首先把书籍通过作者进行分组,然后求每个作者的书的价格的平均值obj = models.book.objects.all().values("Book_Auther").annotate(Avg("Book_price"))print(obj)
3、F查询和Q查询
我们先提出一个问题,就是我们要把书这张表中的所有书的价格都加1000,该如何实现呢?我们可以用下面的方法实现
id_list = models.book.objects.all().values_list("id")# obj = models.book.objects.all()for i in id_list:new_price = models.book.objects.filter(id=i[0])[0].Book_price + 1000models.book.objects.filter(id=i[0]).update(Book_price=new_price)
# id_list = models.book.objects.all().values_list("id")# # obj = models.book.objects.all()# for i in id_list:# new_price = models.book.objects.filter(id=i[0])[0].Book_price + 1000# models.book.objects.filter(id=i[0]).update(Book_price=new_price)# F查询作用很局限,就是对某列的数据做操作,比如我们为价格这一列全部加10000,只能对数字列做操作,而且不能使用双下划线的属性from django.db.models import F# models.book.objects.all().update(Book_price=F("Book_price")+10000)# Q查询:我们之前查询的规则,比如filter中的规则,虽然可以写多个过滤条件,但是这些条件只能是and的关系,如果是or的关系,fileter就做不到了# 这里就需要用到Q查询# Q方法取或用“|”,去交集用 “&”from django.db.models import Q# 比如我们用到id大于5,或者价格大于10000的对象,或方法用一个管道符的方法# 取并集obj = models.book.objects.filter(Q(Book_price__gt=11000)|Q(id=2))print(obj.values("Book_price","id"))# 去交集obj = models.book.objects.filter(Q(Book_price__gt=11000) & Q(id=2))# Q查询和字段查询可以混合使用,但是字段必须要放在最后obj = models.book.objects.filter(Q(Book_price__gt=11000) & Q(id=2),Book_info__contains="aaaa")return HttpResponse("test5")
传入条件查询
q1 = Q()
q1.connector = 'OR'
q1.children.append(('id', 1))
q1.children.append(('id', 2))
q1.children.append(('id', 3))models.Tb1.objects.filter(q1)
合并条件查询
con = Q()q1 = Q()
q1.connector = 'OR'
q1.children.append(('id', 1))
q1.children.append(('id', 2))
q1.children.append(('id', 3))q2 = Q()
q2.connector = 'OR'
q2.children.append(('status', '在线'))con.add(q1, 'AND')
con.add(q2, 'AND')models.Tb1.objects.filter(con)
转载于:https://www.cnblogs.com/bainianminguo/p/9080275.html
Django的mode的分组查询和聚合查询和F查询和Q查询相关推荐
- Django 【第六篇】ORM跨表操作(聚合查询,分组查询,F和Q查询等)
一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many); 一本书只应该由一个出版商出 ...
- Django08-1:模型层(ORM)--聚合查询/分组查询/F与Q查询/开启事务/常用字段及参数/自定义字段/数据库查询优化
聚合查询 单独使用时,用aggregate 1.只要是跟数据库相关的模块 基本都在django.db.models里面 如果没有应该在django.db里面 2. 聚合查询通常配合分组使用 from ...
- $Django 聚合函数、分组查询、F,Q查询、orm字段以及参数
一.聚合函数 from django.db.models import Avg,Sum,Max,Min,Count,F,Q #导入 # .查询图书的总价,平均价,最大价,最小价 ...
- django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066
django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066 1 聚合和分组 聚合:对一些数据进行整理分析 进而得到结果(mysql中的聚合函数) 1aggregate( ...
- Django聚合分组查询(F与Q查询|ORM查询优化|常见字段参数)
文章目录 一.正反向查询进阶操作 二.聚合查询 三.分组查询 四.ORM再次添加字段 五.F与Q查询 五.ORM查询优化 六.事务操作 七.模型层常见字段 八.ORM常见字段参数 九.多对多三种创建方 ...
- Day51python Django 多表操作 聚合查询、分组查询、F查询、Q查询
1聚合查询aggregate aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典,可以自己制定键. 1.# 计算所有图书的平均价格 books = mo ...
- django 中的聚合函数,分组函数,F 查询, Q查询
先以mysql的语句,聚合用在分组里, 对mysql中groupby 是分组 每什么的时候就要分组,如 每个小组,就按小组分, group by 字段 having 聚合函数 #举例 :求班里的平均 ...
- Web框架之Django_05 模型层了解(单表查询、多表查询、聚合查询、分组查询)
阅读目录 一.Django ORM 常用字段和参数: 二.单表查询 三.多表查询 基于双下划线的多表查询 四.聚合查询和分组查询 摘要: 单表查询 多表查询 聚合查询 分组查询 一.Django OR ...
- Django Model各种操作 Meta 常用字段 一对多操作 多对对操作 F Q查询 聚合函数
Model操作 meta源信息 class CLS(models.Model):username = models.CharField(max_length=32)class Meta:db_tabl ...
最新文章
- android代码里 写线程,在Android线程池里运行代码任务实例
- hdu-You can Solve a Geometry Problem too
- 一棵树的生物量怎么算_宾利的眼镜盒价值2万,算坑人吗?网友:良心产品,不坑穷人...
- ajax返回来总是html,ajax返回类型
- Jumpline提供的免费3月的VDS空间,空间容量为20GB, 图文介绍
- CentOS7.5搭建k8s集群
- tablediff同步
- iOS的5种图片缩略技术以及性能探讨
- 在FL Studio中如何使用Patcher插件
- 电脑鼠标右键菜单太多了怎么办?Windows右键菜单设置删除方法介绍
- 约瑟夫 java_约瑟夫问题 java 实现详解
- 10. InnoDB表空间加密
- 前缀学习第二课(下)
- Express中间件
- LIN雨量传感器:吉利雨量感应器拆解 MLX75308开发与应用
- 时间在断断续续的故事上搁浅
- Android开发如何定制framework层服务
- 自动控制原理(1)-典型环节的传递函数
- 寻求真心话大冒险之猜数游戏的最佳策略
- android清理存储工具,(安卓)CCleaner Pro — 手机垃圾文件清理工具
热门文章
- MyBatis学习总结(三)——优化MyBatis配置文件中的配置
- LeetCode集锦(十) - 第28题 Implement StrStr
- Ubuntu虚拟机JeOS安装-2016.08.28
- MySQL学习笔记(六)MySQL8.0 配置笔记
- python登录系统简易框架
- Android开发必看知识,不看后悔
- 深入理解SET NAMES和mysql(i)_set_charset的区别
- harmonyos2.0开发者beta,华为鸿蒙 HarmonyOS 2.0 手机开发者 Beta 活动(广州站)报名开启...
- JS的Event属性和方法
- [Hibernate系列—] 2. 创建SessionFactory 与 Session