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正则表达式实现截取成对括号的方法
Jan 06 Python
python图书管理系统
Apr 05 Python
python实现NB-IoT模块远程控制
Jun 20 Python
详解利用django中间件django.middleware.csrf.CsrfViewMiddleware防止csrf攻击
Oct 09 Python
浅析python3字符串格式化format()函数的简单用法
Dec 07 Python
Appium+Python自动化测试之运行App程序示例
Jan 23 Python
python自动化工具之pywinauto实例详解
Aug 26 Python
python实现广度优先搜索过程解析
Oct 19 Python
python数据分析工具之 matplotlib详解
Apr 09 Python
Django+Celery实现动态配置定时任务的方法示例
May 26 Python
python实现爱奇艺登陆密码RSA加密的方法示例详解
May 27 Python
Python 在函数上添加包装器
Jul 28 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
关于UEditor编辑器远程图片上传失败的解决办法
2012/08/31 PHP
str_replace只替换一次字符串的方法
2013/04/09 PHP
PHP跳转页面的几种实现方法详解
2013/06/08 PHP
PHP中上传多个文件的表单设计例子
2014/11/19 PHP
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
用AngularJS的指令实现tabs切换效果
2016/08/31 Javascript
jQuery自定义图片上传插件实例代码
2017/04/04 jQuery
Vue如何引入远程JS文件
2017/04/20 Javascript
vue绑定class与行间样式style详解
2017/08/16 Javascript
基于node.js实现爬虫的讲解
2019/02/18 Javascript
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS TNC
2018/03/30 DOTA
进一步探究Python中的正则表达式
2015/04/28 Python
Python基于select实现的socket服务器
2016/04/13 Python
python Celery定时任务的示例
2018/03/13 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
Python利用Django如何写restful api接口详解
2018/06/08 Python
Python基于property实现类的特性操作示例
2018/06/15 Python
Python实现直播推流效果
2019/11/26 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
浅谈python opencv对图像颜色通道进行加减操作溢出
2020/06/03 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
美国校园市场:OCM
2017/06/08 全球购物
空字符串(“”)和null的区别
2012/11/13 面试题
办理生育手续介绍信
2014/01/14 职场文书
列车长先进事迹材料
2014/01/25 职场文书
2014大学生全国两会学习心得体会
2014/03/13 职场文书
职务任命书范本
2014/06/05 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
2019个人工作总结
2019/06/21 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python
浅谈Python中的正则表达式
2021/06/28 Python
Vue elementUI表单嵌套表格并对每行进行校验详解
2022/02/18 Vue.js
豆瓣2021评分最高动画剧集-豆瓣评分最高的动画剧集2021
2022/03/18 日漫
Apache Pulsar结合Hudi构建Lakehouse方案分析
2022/03/31 Servers