django框架F&Q 聚合与分组操作示例


Posted in Python onDecember 12, 2019

本文实例讲述了django框架F&Q 聚合与分组操作。分享给大家供大家参考,具体如下:

F 使用查询条件的值,专门取对象中某列值的操作,可以对同一个表中的两个列进行比较

from django.db.models import F
ret=models.Book.objects.filter(count__lt=F('sale')).values() #查找 列 count < sale的数据
for i in ret:
  print(i)
models.Book.objects.filter(sale__gt=F('stock')) #将一个表中的sale和stock进行比较
models.Book.objects.update(sale=F('sale')*2) #将列sale的数据*2,数据自动提交到数据库 print(models.Book.objects.all().values())

Q 构建搜索条件

from django.db.models import Q
#找出满足两个条件的值
ret=models.Book.objects.filter(id__gte=3,title='学泡妞').values()
print(ret)
#使用Q 中的 | 是或的关系
ret=models.Book.objects.filter(Q(id__lt=2)| Q(id__gte=3)).values()
print(ret)
#使用 & 与的关系
ret=models.Book.objects.filter(Q(title='学泡妞') & Q(id__gte=3)).values()
print(ret)
# ~Q 是非的关系
ret=models.Book.objects.filter(~Q(Q(title='学泡妞') & Q(id__gte=3))).values()
print(ret)

聚合查询---关键字aggregate

#统计所有书的平均价格:聚合
  from django.db.models import Avg,Count,Max,Min
  ret=Book.objects.all().aggregate(c=Avg("price"))
  print(ret) #{'c': 114.66666666666667}

分组查询----关键字annotate

#查询每个出版社出版的书籍个数
  ret=Publish.objects.all().annotate(c=Count("book")).values("name","c")
  print(ret) #<QuerySet [{'name': '苹果出版社', 'c': 1}, {'name': '桔子出版社', 'c': 2}]>
  #查询每一个作者出版的书籍的平均价格
  ret=Author.objects.all().annotate(price_avg=Avg("book__price")).values("name","price_avg")
  print(ret)#<QuerySet [{'name': 'alex', 'price_avg': 116.5}, {'name': 'egon', 'price_avg': 114.66666666666667}, {'name': 'yuan', 'price_avg': 111.0}]>
  #查询每一本书籍名称以及作者个数
  ret=Book.objects.all().annotate(c=Count("author")).values("title","c")
  print(ret) #<QuerySet [{'title': '历险记', 'c': 2}, {'title': 'go', 'c': 2}, {'title': 'java', 'c': 2}]>
  #查询价格大于100的每一本书籍名称以及作者个数
  ret = Book.objects.filter(price__gt=100).annotate(c=Count("author")).values("title", "c")
  print(ret)

区别:查询所有书的平均价格用聚合,查询每本书的平均价格用分组

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
用Python登录Gmail并发送Gmail邮件的教程
Apr 17 Python
使用Python发送邮件附件以定时备份MySQL的教程
Apr 25 Python
Django框架中数据的连锁查询和限制返回数据的方法
Jul 17 Python
python爬虫headers设置后无效的解决方法
Oct 21 Python
Pycharm 设置默认头的图文教程
Jan 17 Python
如何使用Python实现斐波那契数列
Jul 02 Python
python、PyTorch图像读取与numpy转换实例
Jan 13 Python
使用pytorch搭建AlexNet操作(微调预训练模型及手动搭建)
Jan 18 Python
Django ORM实现按天获取数据去重求和例子
May 18 Python
如何用Python绘制3D柱形图
Sep 16 Python
用python对excel进行操作(读,写,修改)
Dec 25 Python
只需要这一行代码就能让python计算速度提高十倍
May 24 Python
使用OpenCV-python3实现滑动条更新图像的Canny边缘检测功能
Dec 12 #Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
Dec 12 #Python
python3中pip3安装出错,找不到SSL的解决方式
Dec 12 #Python
python 使用opencv 把视频分割成图片示例
Dec 12 #Python
Python2与Python3的区别点整理
Dec 12 #Python
opencv3/C++实现视频背景去除建模(BSM)
Dec 11 #Python
opencv3/C++实现视频读取、视频写入
Dec 11 #Python
You might like
php 调用百度sms来发送短信的实现示例
2018/11/02 PHP
CL vs ForZe BO5 第五场 2.13
2021/03/10 DOTA
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
javascript 得到变量类型的函数
2010/05/19 Javascript
为开发者准备的10款最好的jQuery日历插件
2014/02/04 Javascript
JavaScript获取table中某一列的值的方法
2014/05/06 Javascript
JS实现状态栏跑马灯文字效果代码
2015/10/24 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
2015/12/02 Javascript
JS Array.slice 截取数组的实现方法
2016/01/02 Javascript
JavaScript核心语法总结(推荐)
2016/06/02 Javascript
javascript显示倒计时控制按钮的简单实现
2016/06/07 Javascript
JS获取中文拼音首字母并通过拼音首字母快速查找页面内对应中文内容的方法【附demo源码】
2016/08/19 Javascript
Node.js中路径处理模块path详解
2016/11/14 Javascript
JS 循环li添加点击事件 (闭包的应用)
2016/12/10 Javascript
浅谈Javascript中的Label语句
2016/12/14 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
使用vue自定义指令开发表单验证插件validate.js
2019/05/23 Javascript
jQuery实现飞机大战小游戏
2020/07/05 jQuery
[55:02]2014 DOTA2国际邀请赛中国区预选赛 HGT VS Orenda
2014/05/21 DOTA
python读写ini配置文件方法实例分析
2015/06/30 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
python三引号如何输入
2020/07/06 Python
基于python实现MQTT发布订阅过程原理解析
2020/07/27 Python
英国最大的女士服装零售商:Bonmarché
2017/08/17 全球购物
德国童装购物网站:NICKI´S.com
2018/04/20 全球购物
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
Python里面如何拷贝一个对象
2014/02/17 面试题
学校后勤岗位职责
2014/02/19 职场文书
先进个人主要事迹怎么写
2015/11/04 职场文书
青年干部培训班学习心得体会
2016/01/06 职场文书
教师信息技术学习心得体会
2016/01/21 职场文书
幼儿园教学反思范文
2016/03/02 职场文书
求职信:会计求职的写作技巧
2019/04/24 职场文书
Python开发工具Pycharm的安装以及使用步骤总结
2021/06/24 Python
java调用Restful接口的三种方法
2021/08/23 Java/Android