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查询相关推荐

  1. Django 【第六篇】ORM跨表操作(聚合查询,分组查询,F和Q查询等)

    一:创建表 书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系(many-to-many);     一本书只应该由一个出版商出 ...

  2. Django08-1:模型层(ORM)--聚合查询/分组查询/F与Q查询/开启事务/常用字段及参数/自定义字段/数据库查询优化

    聚合查询 单独使用时,用aggregate 1.只要是跟数据库相关的模块 基本都在django.db.models里面 如果没有应该在django.db里面 2. 聚合查询通常配合分组使用 from ...

  3. $Django 聚合函数、分组查询、F,Q查询、orm字段以及参数

    一.聚合函数     from django.db.models import Avg,Sum,Max,Min,Count,F,Q   #导入     # .查询图书的总价,平均价,最大价,最小价   ...

  4. django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066

    django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066 1 聚合和分组 聚合:对一些数据进行整理分析 进而得到结果(mysql中的聚合函数) 1aggregate( ...

  5. Django聚合分组查询(F与Q查询|ORM查询优化|常见字段参数)

    文章目录 一.正反向查询进阶操作 二.聚合查询 三.分组查询 四.ORM再次添加字段 五.F与Q查询 五.ORM查询优化 六.事务操作 七.模型层常见字段 八.ORM常见字段参数 九.多对多三种创建方 ...

  6. Day51python Django 多表操作 聚合查询、分组查询、F查询、Q查询

    1聚合查询aggregate aggregate()是QuerySet 的一个终止子句,意思是说,它返回一个包含一些键值对的字典,可以自己制定键. 1.# 计算所有图书的平均价格 books = mo ...

  7. django 中的聚合函数,分组函数,F 查询, Q查询

    先以mysql的语句,聚合用在分组里, 对mysql中groupby 是分组 每什么的时候就要分组,如 每个小组,就按小组分, group by 字段 having 聚合函数 #举例  :求班里的平均 ...

  8. Web框架之Django_05 模型层了解(单表查询、多表查询、聚合查询、分组查询)

    阅读目录 一.Django ORM 常用字段和参数: 二.单表查询 三.多表查询 基于双下划线的多表查询 四.聚合查询和分组查询 摘要: 单表查询 多表查询 聚合查询 分组查询 一.Django OR ...

  9. Django Model各种操作 Meta 常用字段 一对多操作 多对对操作 F Q查询 聚合函数

    Model操作 meta源信息 class CLS(models.Model):username = models.CharField(max_length=32)class Meta:db_tabl ...

最新文章

  1. android代码里 写线程,在Android线程池里运行代码任务实例
  2. hdu-You can Solve a Geometry Problem too
  3. 一棵树的生物量怎么算_宾利的眼镜盒价值2万,算坑人吗?网友:良心产品,不坑穷人...
  4. ajax返回来总是html,ajax返回类型
  5. Jumpline提供的免费3月的VDS空间,空间容量为20GB, 图文介绍
  6. CentOS7.5搭建k8s集群
  7. tablediff同步
  8. iOS的5种图片缩略技术以及性能探讨
  9. 在FL Studio中如何使用Patcher插件
  10. 电脑鼠标右键菜单太多了怎么办?Windows右键菜单设置删除方法介绍
  11. 约瑟夫 java_约瑟夫问题 java 实现详解
  12. 10. InnoDB表空间加密
  13. 前缀学习第二课(下)
  14. Express中间件
  15. LIN雨量传感器:吉利雨量感应器拆解 MLX75308开发与应用
  16. 时间在断断续续的故事上搁浅
  17. Android开发如何定制framework层服务
  18. 自动控制原理(1)-典型环节的传递函数
  19. 寻求真心话大冒险之猜数游戏的最佳策略
  20. android清理存储工具,(安卓)CCleaner Pro — 手机垃圾文件清理工具

热门文章

  1. MyBatis学习总结(三)——优化MyBatis配置文件中的配置
  2. LeetCode集锦(十) - 第28题 Implement StrStr
  3. Ubuntu虚拟机JeOS安装-2016.08.28
  4. MySQL学习笔记(六)MySQL8.0 配置笔记
  5. python登录系统简易框架
  6. Android开发必看知识,不看后悔
  7. 深入理解SET NAMES和mysql(i)_set_charset的区别
  8. harmonyos2.0开发者beta,华为鸿蒙 HarmonyOS 2.0 手机开发者 Beta 活动(广州站)报名开启...
  9. JS的Event属性和方法
  10. [Hibernate系列—] 2. 创建SessionFactory 与 Session