Django Model层F,Q对象和聚合函数原理解析


Posted in Python onNovember 12, 2020

一.F对象:

作用:用于处理类属性(即model的某个列数据),类属性之间的比较。

使用之前需要先导入:

from django.db.models import F

例1:查询图书阅读量大于评论量图书信息。

BookInfo.objects.filter(bread__gt=F('bcomment'))

**例2:**查询图书 阅读量大于2倍评论 量图书信息。

BookInfo.objects.filter(bread__gt=F('bcomment')*2)

二.Q对象:

作用:用于查询时条件之间的逻辑关系。not and or,可以对Q对象进行& | ~操作。

使用之前需要先导入:

from django.db.models import Q

例1: 查询id大于3且阅读量大于30的图书的信息。

写法1:BookInfo.objects.filter(id__gt=3,bread__gt=30)

写法2:BookInfo.objects.filter(Q(id__gt=3)&Q(bread__gt=30))

例2:查询id大于3或者阅读量大于30的图书的信息。

BookInfo.objects.filter(Q(id__gt=3)|Q(bread__gt=30))

例3:查询id不等于3图书的信息。

BookInfo.objects.filter(~Q(id=3))

三.聚合函数:

作用:对查询结果进行聚合操作。

sum count avg max min

1. aggregate:

调用这个函数来使用聚合。 返回值是一个字典

使用前需先导入聚合类:

from django.db.models import Sum,Count,Max,Min,Avg

例1:查询所有图书的数目。

BookInfo.objects.all().aggregate(Count('id'))

例2:查询所有图书阅读量的总和。

BookInfo.objects.all().aggregate(Sum(‘bread'))

2.count函数: 返回值是一个数字

作用:统计满足条件数据的数目。

**例1:**统计所有图书的数目。

BookInfo.objects.count()

**例2:**统计id大于3的所有图书的数目。

BookInfo.objects.filter(id__gt=3).count()

总结:

  • 使用F对象导入:from django.db.models import Q
  • 使用Q对象导入:from django.db.models import F
  • 使用聚合函数对导入聚合类:from django.db.models import Sum,Count,Max,Min,Avg 等等

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Windows下为Python安装Matplotlib模块
Nov 06 Python
简单介绍Python中的几种数据类型
Jan 02 Python
python条件变量之生产者与消费者操作实例分析
Mar 22 Python
Python实现查找匹配项作处理后再替换回去的方法
Jun 10 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
Jan 11 Python
Python3几个常见问题的处理方法
Feb 26 Python
pycharm激活码有效到2020年11月底
Sep 18 Python
keras的siamese(孪生网络)实现案例
Jun 12 Python
区分python中的进程与线程
Aug 13 Python
Python自动巡检H3C交换机实现过程解析
Aug 14 Python
python mock测试的示例
Oct 19 Python
python包的导入方式总结
Mar 02 Python
在Python中字典按值排序的实现方法
Nov 12 #Python
Sublime Text3最新激活注册码分享适用2020最新版 亲测可用
Nov 12 #Python
通过代码简单了解django model序列化作用
Nov 12 #Python
Django contrib auth authenticate函数源码解析
Nov 12 #Python
python 获取字典键值对的实现
Nov 12 #Python
Sentry错误日志监控使用方法解析
Nov 12 #Python
python 利用opencv实现图像网络传输
Nov 12 #Python
You might like
PHP实现的英文名字全拼随机排号脚本
2014/07/04 PHP
配置php.ini实现PHP文件上传功能
2014/11/27 PHP
php实现递归与无限分类的方法
2015/02/16 PHP
PHP实现ASCII码与字符串相互转换的方法
2017/04/29 PHP
PHP中实现中文字串截取无乱码的解决方法
2018/05/29 PHP
显示js对象所有属性和方法的函数
2009/10/16 Javascript
jQuery实战之品牌展示列表效果
2011/04/10 Javascript
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
from 表单提交返回值用post或者是get方法实现
2013/08/21 Javascript
js重写alert控件(适合学习js的新手朋友)
2014/08/24 Javascript
js中数组结合字符串实现查找(屏蔽广告判断url等)
2016/03/30 Javascript
javascript 分号总结及详细介绍
2016/09/24 Javascript
js print打印网页指定区域内容的简单实例
2016/11/01 Javascript
jQuery实现的上传图片本地预览效果简单示例
2018/03/29 jQuery
vue移动端监听滚动条高度的实现方法
2018/09/03 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
Python读取Json字典写入Excel表格的方法
2018/01/03 Python
对python多线程中Lock()与RLock()锁详解
2019/01/11 Python
Python Pandas中根据列的值选取多行数据
2019/07/08 Python
如何用OpenCV -python3实现视频物体追踪
2019/12/04 Python
在django项目中导出数据到excel文件并实现下载的功能
2020/03/13 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
利用css3画个同心圆示例代码
2017/07/03 HTML / CSS
html5理解head_动力节点Java学院整理
2017/07/13 HTML / CSS
html5 音乐播放器 audio 标签使用概述
2013/07/15 HTML / CSS
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
理肤泉俄罗斯官网:La Roche-Posay俄罗斯
2018/07/24 全球购物
阿玛尼意大利官网:Armani意大利
2018/10/30 全球购物
JAVA招聘远程笔试题
2015/07/23 面试题
大学生旅游业创业计划书
2014/01/29 职场文书
舞蹈专业求职信
2014/06/13 职场文书
保险专业求职信
2014/07/07 职场文书
事业单位年度考核个人总结
2015/02/12 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书
投资入股协议书
2016/03/22 职场文书