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 相关文章推荐
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
Nov 18 Python
python中requests小技巧
May 10 Python
JS设计模式之责任链模式实例详解
Feb 03 Python
dataframe设置两个条件取值的实例
Apr 12 Python
python opencv3实现人脸识别(windows)
May 25 Python
用django-allauth实现第三方登录的示例代码
Jun 24 Python
基于h5py的使用及数据封装代码
Dec 26 Python
Python类继承和多态原理解析
Feb 05 Python
django列表筛选功能的实现代码
Mar 27 Python
Python sql注入 过滤字符串的非法字符实例
Apr 03 Python
Python基于数列实现购物车程序过程详解
Jun 09 Python
关于python3.9安装wordcloud出错的问题及解决办法
Nov 02 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+ajax制作无刷新留言板
2015/10/27 PHP
PHP表单验证内容是否为空的实现代码
2016/11/14 PHP
PHP实现统计代码行数小工具
2019/09/19 PHP
thinkphp5+layui实现的分页样式示例
2019/10/08 PHP
jQuery each()小议
2010/03/18 Javascript
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
jquery单行文字向上滚动效果示例
2014/03/06 Javascript
jquery实现点击页面计算点击次数
2015/01/23 Javascript
js兼容火狐显示上传图片预览效果的方法
2015/05/21 Javascript
jQuery实现鼠标点击弹出渐变层的方法
2015/07/09 Javascript
基于Vue生产环境部署详解
2017/09/15 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
2017/09/27 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
2019/01/22 Javascript
vue中nextTick用法实例
2019/09/11 Javascript
ES2020 新特性(种草)
2020/01/12 Javascript
package.json中homepage属性的作用详解
2020/03/11 Javascript
Vue中添加滚动事件设置的方法详解
2020/09/14 Javascript
[01:00:26]Ti4主赛事胜者组第一天 EG vs NEWBEE 1
2014/07/19 DOTA
对python多线程SSH登录并发脚本详解
2019/02/14 Python
Python将字符串常量转化为变量方法总结
2019/03/17 Python
python顺序执行多个py文件的方法
2019/06/29 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
python框架flask入门之环境搭建及开启调试
2020/06/07 Python
python3.7.3版本和django2.2.3版本是否可以兼容
2020/09/01 Python
使用Canvas操作像素的方法
2018/06/14 HTML / CSS
健康监测猫砂:Pretty Litter
2017/05/25 全球购物
美国折扣网站:jClub
2017/08/07 全球购物
建筑系毕业生自我鉴定
2014/01/24 职场文书
三年级学生评语
2014/04/23 职场文书
共产党员公开承诺践诺书
2014/05/28 职场文书
平安建设工作方案
2014/06/02 职场文书
青奥会口号
2014/06/12 职场文书
2015年大学生实习评语
2015/03/25 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
纯CSS实现hover图片pop-out弹出效果的实例代码
2021/04/16 HTML / CSS
python实现简单石头剪刀布游戏
2021/10/24 Python