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实现图书超期提醒
Aug 02 Python
python中子类继承父类的__init__方法实例
Dec 15 Python
python常见的格式化输出小结
Dec 15 Python
Python设计模式之门面模式简单示例
Jan 09 Python
Python如何抓取天猫商品详细信息及交易记录
Feb 23 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
Mar 30 Python
对python 操作solr索引数据的实例详解
Dec 07 Python
手机使用python操作图片文件(pydroid3)过程详解
Sep 25 Python
Python内置数据类型list各方法的性能测试过程解析
Jan 07 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
Nov 24 Python
pyspark对Mysql数据库进行读写的实现
Dec 30 Python
Python爬虫入门教程02之笔趣阁小说爬取
Jan 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
来自phpguru得Php Cache类源码
2010/04/15 PHP
php+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
2015/12/31 PHP
Yii2框架RESTful API 格式化响应,授权认证和速率限制三部分详解
2016/11/10 PHP
PHP MYSQL简易交互式站点开发
2016/12/27 PHP
javascript 面向对象编程基础 多态
2009/08/21 Javascript
js 实现复制到粘贴板的功能代码
2010/05/13 Javascript
使用jquery实现select添加实现后台权限添加的效果
2011/05/28 Javascript
javascript删除数组元素并且数组长度减小的简单实例
2014/02/14 Javascript
基于insertBefore制作简单的循环插空效果
2015/09/21 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
jQuery常用样式操作实例分析(获取、设置、追加、删除、判断等)
2016/09/08 Javascript
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
微信小程序实现轮播图效果
2017/09/07 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
element-ui中的select下拉列表设置默认值方法
2018/08/24 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
python函数形参用法实例分析
2015/08/04 Python
Python 基于Twisted框架的文件夹网络传输源码
2016/08/28 Python
python将文本中的空格替换为换行的方法
2018/03/19 Python
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
PHP基于phpqrcode类库生成二维码过程解析
2020/05/28 Python
PySide2出现“ImportError: DLL load failed: 找不到指定的模块”的问题及解决方法
2020/06/10 Python
Python selenium如何打包静态网页并下载
2020/08/12 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
2015/01/27 面试题
便利店投资的创业计划书
2014/01/12 职场文书
带病坚持工作事迹
2014/05/03 职场文书
书法大赛策划方案
2014/06/04 职场文书
纪检干部对照检查材料
2014/08/22 职场文书
2014年仓库管理员工作总结
2014/11/18 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书
学生退学证明
2015/06/23 职场文书