Django ORM (四) annotate,F,Q 查询
annotate
可以通过计算查询结果中每一个对象所关联的对象集合,从而得出总计值(也可以是平均值或总和),即为查询集的每一项生成聚合。
from django.shortcuts import render, HttpResponse
from app01 import models
from app01.models import Book,Author,Publisher
from django.db.models import Avg,Min,Sum,Max
def data_oper(req):
# 查询每个出版社书的总价
obj = models.Book.objects.values("publisher__name").annotate(Sum("price"))
print(obj)
return HttpResponse("Hello world")

# 查询 klvchen 出的书总价格
...
def data_oper(req):
obj = Book.objects.filter(authors__name="klvchen").aggregate(Sum("price"))
print(obj)
return HttpResponse("Hello world")

F查询
F 使用查询条件的值,专门取对象中某列值的操作
from django.shortcuts import render, HttpResponse
from app01 import models
from app01.models import Book,Author,Publisher
from django.db.models import Avg,Min,Sum,Max
from django.db.models import F
# 书籍的价格都加20
def data_oper(req):
models.Book.objects.all().update(price=F("price")+20)
return HttpResponse("Hello world")
Q 查询
Q 构建搜索条件
from django.shortcuts import render, HttpResponse
from app01 import models
from app01.models import Book,Author,Publisher
from django.db.models import Avg,Min,Sum,Max
from django.db.models import F,Q
from django.db.models import F,Q
# 查询 book 表 id 为3的书名,这里书名是因为在 models.py 定义的 class Book 里面 __str__ 返回的是 title 字段
def data_oper(req):
obj = models.Book.objects.filter(Q(id=3))[0]
print(obj)
return HttpResponse("Hello world")

.....
from django.db.models import F,Q
# 查询 book 表 id为3或者 title 为 GO 的记录
def data_oper(req):
obj = models.Book.objects.filter(Q(id=3)|Q(title="GO"))
print(obj)
return HttpResponse("Hello world")

Q对象可以与关键字参数查询一起使用,不过一定要把Q对象放在关键字参数查询的前面
from django.db.models import F,Q
def data_oper(req):
obj = models.Book.objects.filter(Q(price__gt=50)&(Q(id=3)|Q(title="php")), publisher_id=1)
print(obj)
return HttpResponse("Hello world")

Django ORM (四) annotate,F,Q 查询的更多相关文章
- orm中的聚合函数,分组,F/Q查询,字段类,事务
目录 一.聚合函数 1. 基础语法 2. Max Min Sum Avg Count用法 (1) Max()/Min() (2)Avg() (3)Count() (4)聚合函数联用 二.分组查询 1. ...
- Django框架08 /聚合查询、分组、F/Q查询、原生sql相关
Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 目录 Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 1. 聚合查询 2. 分组 3. F查询和Q查询 4. o ...
- Django day08 多表操作 (五) 聚合,分组查询 和 F,Q查询
一:聚合,分组查询 二:F, Q查询
- 分组\聚合\F\Q查询
一.分组和聚合查询 1.aggregate(*args,**kwargs) 聚合函数 通过对QuerySet进行计算,返回一个聚合值的字典.aggregate()中每一个参数都指定一个包含在字典中的 ...
- $Django 聚合函数、分组查询、F,Q查询、orm字段以及参数
一.聚合函数 from django.db.models import Avg,Sum,Max,Min,Count,F,Q #导入 # .查询图书的总价,平均价,最大价,最小价 ...
- 模型层字段-多表查询-神奇的双下划线查询-F,Q查询
Django ORM中常用的字段和参数 常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. In ...
- Python数据库查询之组合条件查询-F&Q查询
F查询(取字段的值) 关于查询我们知道有filter( ) ,values( ) , get( ) ,exclude( ) ,如果是聚合分组,还会用到aggregate和annotate,甚至还有万能 ...
- python-day71--django多表双下划线查询及分组聚合及F/Q查询
#====================================双下划线的跨表查询===============# 前提 此时 related_name=bookList 属性查询: # 查 ...
- 聚合查询、分组查询、F&Q查询
一.聚合查询和分组查询 1.aggregate(*args, **kwargs): 通过对QuerySet进行计算,返回一个聚合值的字典.aggregate()中每个参数都指定一个包含在字典中的返回值 ...
随机推荐
- 再谈Drupal 7.X的性能优化运行速度问题
D6升级D7之后,性能着实让人头大,不妨参考下面文章,另外站内搜索DOOOOR里其他优化文章,中西医结合吧.其中CDN和BOOST效果还可以,其他的没试过. 1,服务器 Web服务器建议,推荐使用HA ...
- discuz迁移到虚拟空间后无法上传图片的问题
discuz X3迁移到虚拟空间后无法上传图片,提示"附件无法保存": 解决方法: 1.看看虚拟空间的容量是不是满了. 2.登录管理员后台,工具->更新缓存.
- Oracle存储函数jdbc调用
package com.jckb.procedure; import java.sql.CallableStatement; import java.sql.Connection; import ja ...
- WPF使用Aspose.Words导出Word文档
一.创建Word文档模板 分析需要导出的word文档,将固定的内容和由程序生成的内容分开; 创建一个word(例如:Template.doc)文档,将固定的内容按照一定的格式写入当前文档中; 打开Te ...
- js 数组对象去重
let hash = {}; let config = [ { name: 2, state: true, output: 'Y'}, { name: 3, state: true, output: ...
- FusionCharts使用JavaScript渲染图表(不用Flash)
FusionCharts可以让用户只使用JavaScript建立图表(而不是使用Flash),只需要添加另一行代码,如下所示: FusionCharts.setCurrentRenderer('jav ...
- C# 获取文件夹下所有的文件
static void getAllFileNameInDir(string path, ref List<string> files) { DirectoryInfo folder = ...
- 使用kvm制作Eucalyptus镜像(Windows Server 2008r2为例)
1.前言 Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems (Eucalyptus) ...
- 【C++】【MFC】创建新的线程函数
DWORD WINAPI MyThreadProc (LPVOID lpParam){ somestruct* pN = (somestruct*)lpParam; // 将参数转为你的类型 ... ...
- jQuery_3_过滤选择器
过滤选择器(过滤器)类似于CSS3里的伪类,包含 1. 基本过滤器 2. 内容过滤器 3. 可见性过滤器 4. 子元素过滤器 5. 其他方法 一. 基本过滤器 过滤器名 jQuery语法 注释 :f ...