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实现快速排序算法及去重的快速排序的简单示例
Jun 26 Python
微信 用脚本查看是否被微信好友删除
Oct 28 Python
详解python中的 is 操作符
Dec 26 Python
python爬虫基本知识
Mar 05 Python
Python 新建文件夹与复制文件夹内所有内容的方法
Oct 27 Python
python 常见字符串与函数的用法详解
Nov 23 Python
python实战串口助手_解决8串口多个发送的问题
Jun 12 Python
python常用库之NumPy和sklearn入门
Jul 11 Python
python retrying模块的使用方法详解
Sep 25 Python
python之列表推导式的用法
Nov 29 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
Aug 07 Python
python3.7中安装paddleocr及paddlepaddle包的多种方法
Nov 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
超级简单的发送邮件程序
2006/10/09 PHP
使用 MySQL 开始 PHP 会话
2006/12/21 PHP
php反弹shell实现代码
2009/04/22 PHP
PHP中改变图片的尺寸大小的代码
2011/07/17 PHP
tp5框架内使用tp3.2分页的方法分析
2019/05/05 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
解析arp病毒背后利用的Javascript技术附解密方法
2007/08/06 Javascript
基于jQuery的message插件实现右下角弹出消息框
2011/01/11 Javascript
网页右键ie不支持event.preventDefault和event.returnValue (需要加window)
2013/02/22 Javascript
Ubuntu中搭建Nodejs开发环境过程分享
2014/06/01 NodeJs
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
JavaScript 变量、作用域及内存
2015/04/08 Javascript
JavaScript动态修改背景颜色的方法
2015/04/16 Javascript
Javascript技术栈中的四种依赖注入详解
2016/02/23 Javascript
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
基于axios封装fetch方法及调用实例
2018/02/05 Javascript
解决vue2.0动态绑定图片src属性值初始化时报错的问题
2018/03/14 Javascript
React Native基础入门之初步使用Flexbox布局
2018/07/02 Javascript
jQuery实现表单动态添加与删除数据操作示例
2018/07/03 jQuery
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
Vue源码探究之虚拟节点的实现
2019/04/17 Javascript
Python sys.path详细介绍
2013/10/17 Python
Python和perl实现批量对目录下电子书文件重命名的代码分享
2014/11/21 Python
用PyQt进行Python图形界面的程序的开发的入门指引
2015/04/14 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
python时间time模块处理大全
2020/10/25 Python
python实现磁盘日志清理的示例
2020/11/05 Python
艺术爱好者的自我评价分享
2013/10/08 职场文书
测绘工程个人的自我评价
2013/11/10 职场文书
冬季安全检查方案
2014/05/23 职场文书
2014年团支书工作总结
2014/11/14 职场文书