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 检查数组元素是否存在类似PHP isset()方法
Oct 14 Python
python检查字符串是否是正确ISBN的方法
Jul 11 Python
spyder常用快捷键(分享)
Jul 19 Python
python实现报表自动化详解
Nov 16 Python
Python实现识别手写数字 简易图片存储管理系统
Jan 29 Python
Python装饰器的执行过程实例分析
Jun 04 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
Jun 27 Python
解读python如何实现决策树算法
Oct 11 Python
Django组件之cookie与session的使用方法
Jan 10 Python
分享8个非常流行的 Python 可视化工具包
Jun 05 Python
python保留格式汇总各部门excel内容的实现思路
Jun 01 Python
pytorch中Schedule与warmup_steps的用法说明
May 24 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
《魔兽争霸3》重制版究竟重制了什么?玩家:这么糊弄真的好吗?
2020/05/04 魔兽争霸
PHP数字格式化
2006/12/06 PHP
标准PHP的AES加密算法类
2015/03/12 PHP
php快速排序原理与实现方法分析
2016/05/26 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
PHP7.0连接DB操作实例分析【基于mysqli】
2019/09/26 PHP
js与jquery中获取当前鼠标的x、y坐标位置的代码
2011/05/23 Javascript
js使用ajax读博客rss示例
2014/05/06 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
nodejs教程之入门
2014/11/21 NodeJs
深入分析原生JavaScript事件
2014/12/29 Javascript
JavaScript中用getDate()方法返回指定日期的教程
2015/06/09 Javascript
AngularJS中的Promise详细介绍及实例代码
2016/12/13 Javascript
AngularJS基于MVC的复杂操作实例讲解
2017/12/31 Javascript
Vue弹出菜单功能的实现代码
2018/09/12 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
[02:30]辉夜杯主赛事第二日胜者组半决赛 CDEC.Y赛后采访
2015/12/26 DOTA
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
python 开发的三种运行模式详细介绍
2017/01/18 Python
Python嵌套列表转一维的方法(压平嵌套列表)
2018/07/03 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
Python中使用遍历在列表中添加字典遇到的坑
2019/02/27 Python
python实现转圈打印矩阵
2019/03/02 Python
520使用Python实现“我爱你”表白
2020/05/20 Python
新西兰优惠网站:Treat Me
2019/07/04 全球购物
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
介绍一下grep命令的使用
2012/06/28 面试题
金融专业大学生自我评价
2014/01/09 职场文书
计算机通信专业推荐信
2014/02/22 职场文书
荷叶母亲教学反思
2014/04/30 职场文书
法院授权委托书范文
2014/08/02 职场文书
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
mysql的数据压缩性能对比详情
2021/11/07 MySQL