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 相关文章推荐
Python中使用Boolean操作符做真值测试实例
Jan 30 Python
Python实现曲线点抽稀算法的示例
Oct 12 Python
TensorFlow实现随机训练和批量训练的方法
Apr 28 Python
Python 读取某个目录下所有的文件实例
Jun 23 Python
django fernet fields字段加密实践详解
Aug 12 Python
python3的数据类型及数据类型转换实例详解
Aug 20 Python
详解Python self 参数
Aug 30 Python
Python3实现zip分卷压缩过程解析
Oct 09 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
Feb 25 Python
python filecmp.dircmp实现递归比对两个目录的方法
May 22 Python
python上下文管理器异常问题解决方法
Feb 07 Python
PyTorch dropout设置训练和测试模式的实现
May 27 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中读写文件实现代码
2011/10/20 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
2013/06/21 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
PHP执行shell脚本运行程序不产生core文件的方法
2016/12/28 PHP
JavaScript对象链式操作代码(jquery)
2010/07/04 Javascript
javascript对数组的常用操作代码 数组方法总汇
2011/01/27 Javascript
web性能优化之javascript性能调优
2012/12/28 Javascript
jquery禁用右键单击功能屏蔽F5刷新
2014/03/17 Javascript
详解JavaScript中getFullYear()方法的使用
2015/06/10 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
jQuery ajax的功能实现方法详解
2017/01/06 Javascript
在Js页面通过POST传递参数跳转到新页面详解
2017/08/25 Javascript
vue.js 实现图片本地预览 裁剪 压缩 上传功能
2018/03/01 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
vue实现百度下拉列表交互操作示例
2019/03/12 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
python根据文件大小打log日志
2014/10/09 Python
python文件的md5加密方法
2016/04/06 Python
解决python父线程关闭后子线程不关闭问题
2020/04/25 Python
python3.5的包存放的具体路径
2020/08/16 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
CSS3实现曲线阴影和翘边阴影
2016/05/03 HTML / CSS
墨尔本最受欢迎的复古风格品牌:Princess Highway
2018/12/21 全球购物
node中使用shell脚本的方法步骤
2021/03/23 Javascript
工商管理实习自我鉴定
2013/09/28 职场文书
英语道歉信范文
2014/01/09 职场文书
大学生工作自荐书
2014/06/16 职场文书
会计人员演讲稿
2014/09/11 职场文书
社区活动总结
2015/02/04 职场文书
2016年大学生实习单位评语
2015/12/01 职场文书
《陶罐和铁罐》教学反思
2016/03/03 职场文书
选购到合适的激光打印机
2022/04/21 数码科技