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写的ARP攻击代码实例
Jun 04 Python
Python单例模式的两种实现方法
Aug 14 Python
Python及Django框架生成二维码的方法分析
Jan 31 Python
Python实现的生产者、消费者问题完整实例
May 30 Python
Python实现两个list求交集,并集,差集的方法示例
Aug 02 Python
python中字典按键或键值排序的实现代码
Aug 27 Python
Python list与NumPy array 区分详解
Nov 06 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
Jan 04 Python
Django项目如何正确配置日志(logging)
Apr 29 Python
教你用Python+selenium搭建自动化测试环境
Jun 18 Python
Python3.8官网文档之类的基础语法阅读
Sep 04 Python
详解pytorch创建tensor函数
Mar 22 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
收听短波不可能有声音清晰的品质吗
2021/03/01 无线电
PHP递归遍历指定目录的文件并统计文件数量的方法
2015/03/24 PHP
解决php 处理 form 表单提交多个 name 属性值相同的 input 标签问题
2017/05/11 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
关于JS控制代码暂停的实现方法分享
2012/10/11 Javascript
让checkbox不选中即将选中的checkbox不选中
2014/07/11 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
jQuery实现手机上输入后隐藏键盘功能
2017/01/04 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
详解nodejs微信公众号开发——4.自动回复各种消息
2017/04/11 NodeJs
初探js和简单隐藏效果的实例
2017/11/23 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
vue生命周期实例小结
2018/08/15 Javascript
layer.open 按钮的点击事件关闭方法
2018/08/17 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
2018/09/11 Javascript
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
原生JS实现萤火虫效果
2020/03/07 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
[01:00:53]OG vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python 命令行参数sys.argv
2008/09/06 Python
教你学会使用Python正则表达式
2017/09/07 Python
Python Socket使用实例
2017/12/18 Python
Python 查找字符在字符串中的位置实例
2018/05/02 Python
python无限生成不重复(字母,数字,字符)组合的方法
2018/12/04 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
jupyter notebook 中输出pyecharts图实例
2020/04/23 Python
python爬取本站电子书信息并入库的实现代码
2020/01/20 Python
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
中软国际Java程序员笔试题
2014/07/19 面试题
验房委托书
2014/08/30 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
单位实习介绍信
2015/05/05 职场文书
《怀念母亲》教学反思
2016/02/19 职场文书
vue3.0 数字翻牌组件的使用方法详解
2022/04/20 Vue.js