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 相关文章推荐
pymongo给mongodb创建索引的简单实现方法
May 06 Python
Python中的条件判断语句基础学习教程
Feb 07 Python
python smtplib模块自动收发邮件功能(二)
May 22 Python
关于python列表增加元素的三种操作方法
Aug 22 Python
Python Web框架之Django框架Model基础详解
Aug 16 Python
Python collections模块使用方法详解
Aug 28 Python
Python爬虫实现“盗取”微信好友信息的方法分析
Sep 16 Python
python3常用的数据清洗方法(小结)
Oct 31 Python
python 解决flask uwsgi 获取不到全局变量的问题
Dec 22 Python
Python基础之函数基本用法与进阶详解
Jan 02 Python
Macbook安装Python最新版本、GUI开发环境、图像处理、视频处理环境详解
Feb 17 Python
keras topN显示,自编写代码案例
Jul 03 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 CURL CURLOPT参数说明(curl_setopt)
2013/09/30 PHP
Twig模板引擎用法入门教程
2016/01/20 PHP
jQuery使用手册之二 DOM操作
2007/03/24 Javascript
JavaScript 中的replace方法说明
2007/04/13 Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
js变换显示图片的实例
2013/04/16 Javascript
js弹出层永远居中实现思路及代码
2013/11/29 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
JavaScript、tab切换完整版(自动切换、鼠标移入停止、移开运行)
2016/01/05 Javascript
javascript基本数据类型和转换
2017/03/17 Javascript
微信小程序删除处理详解
2017/08/16 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
React中的render何时执行过程
2018/04/13 Javascript
checkbox在vue中的用法小结
2018/11/13 Javascript
JavaScript禁用右键单击优缺点分析
2019/01/20 Javascript
jquery实现垂直手风琴导航栏
2020/02/18 jQuery
Python CSV模块使用实例
2015/04/09 Python
python脚本内运行linux命令的方法
2015/07/02 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
Django实现一对多表模型的跨表查询方法
2018/12/18 Python
python xpath获取页面注释的方法
2019/01/14 Python
解决pycharm的Python console不能调试当前程序的问题
2019/01/20 Python
python 定时器,实现每天凌晨3点执行的方法
2019/02/20 Python
深入浅析python的第三方库pandas
2020/02/13 Python
Python常用编译器原理及特点解析
2020/03/23 Python
解析Python 偏函数用法全方位实现
2020/06/26 Python
CSS3实现多背景模拟动态边框的效果
2016/11/08 HTML / CSS
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
2015/07/16 面试题
职务任命书范本
2014/06/05 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
2015年计生工作总结范文
2015/04/24 职场文书
2015年英语教学工作总结
2015/05/25 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
Nginx工作原理和优化总结。
2021/04/02 Servers