annotate

可以通过计算查询结果中每一个对象所关联的对象集合,从而得出总计值(也可以是平均值或总和),即为查询集的每一项生成聚合。

  1. from django.shortcuts import render, HttpResponse
  2. from app01 import models
  3. from app01.models import Book,Author,Publisher
  4. from django.db.models import Avg,Min,Sum,Max
  5. def data_oper(req):
  6. # 查询每个出版社书的总价
  7. obj = models.Book.objects.values("publisher__name").annotate(Sum("price"))
  8. print(obj)
  9. return HttpResponse("Hello world")

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

F查询

F 使用查询条件的值,专门取对象中某列值的操作

  1. from django.shortcuts import render, HttpResponse
  2. from app01 import models
  3. from app01.models import Book,Author,Publisher
  4. from django.db.models import Avg,Min,Sum,Max
  5. from django.db.models import F
  6. # 书籍的价格都加20
  7. def data_oper(req):
  8. models.Book.objects.all().update(price=F("price")+20)
  9. return HttpResponse("Hello world")

Q 查询

Q 构建搜索条件

  1. from django.shortcuts import render, HttpResponse
  2. from app01 import models
  3. from app01.models import Book,Author,Publisher
  4. from django.db.models import Avg,Min,Sum,Max
  5. from django.db.models import F,Q
  6. from django.db.models import F,Q
  7. # 查询 book 表 id 为3的书名,这里书名是因为在 models.py 定义的 class Book 里面 __str__ 返回的是 title 字段
  8. def data_oper(req):
  9. obj = models.Book.objects.filter(Q(id=3))[0]
  10. print(obj)
  11. return HttpResponse("Hello world")

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

Q对象可以与关键字参数查询一起使用,不过一定要把Q对象放在关键字参数查询的前面

  1. from django.db.models import F,Q
  2. def data_oper(req):
  3. obj = models.Book.objects.filter(Q(price__gt=50)&(Q(id=3)|Q(title="php")), publisher_id=1)
  4. print(obj)
  5. return HttpResponse("Hello world")

Django ORM (四) annotate,F,Q 查询的更多相关文章

  1. orm中的聚合函数,分组,F/Q查询,字段类,事务

    目录 一.聚合函数 1. 基础语法 2. Max Min Sum Avg Count用法 (1) Max()/Min() (2)Avg() (3)Count() (4)聚合函数联用 二.分组查询 1. ...

  2. Django框架08 /聚合查询、分组、F/Q查询、原生sql相关

    Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 目录 Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 1. 聚合查询 2. 分组 3. F查询和Q查询 4. o ...

  3. Django day08 多表操作 (五) 聚合,分组查询 和 F,Q查询

    一:聚合,分组查询 二:F, Q查询

  4. 分组\聚合\F\Q查询

    一.分组和聚合查询 1.aggregate(*args,**kwargs)  聚合函数 通过对QuerySet进行计算,返回一个聚合值的字典.aggregate()中每一个参数都指定一个包含在字典中的 ...

  5. $Django 聚合函数、分组查询、F,Q查询、orm字段以及参数

        一.聚合函数    from django.db.models import Avg,Sum,Max,Min,Count,F,Q   #导入    # .查询图书的总价,平均价,最大价,最小价 ...

  6. 模型层字段-多表查询-神奇的双下划线查询-F,Q查询

    Django ORM中常用的字段和参数 常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. In ...

  7. Python数据库查询之组合条件查询-F&Q查询

    F查询(取字段的值) 关于查询我们知道有filter( ) ,values( ) , get( ) ,exclude( ) ,如果是聚合分组,还会用到aggregate和annotate,甚至还有万能 ...

  8. python-day71--django多表双下划线查询及分组聚合及F/Q查询

    #====================================双下划线的跨表查询===============# 前提 此时 related_name=bookList 属性查询: # 查 ...

  9. 聚合查询、分组查询、F&Q查询

    一.聚合查询和分组查询 1.aggregate(*args, **kwargs): 通过对QuerySet进行计算,返回一个聚合值的字典.aggregate()中每个参数都指定一个包含在字典中的返回值 ...

随机推荐

  1. Java文件与io——字符流

    Writer写入字符流的抽象类.对文件的操作使用:FileWriter类完成 Reader读取字符的抽象类. public class CharDemo { /** * @param args */ ...

  2. C# 读写XML文件的方法

    C# 读写XML文件的方法 一.写XML文件 XmlDocument xmlDocument = new XmlDocument();xmlDocument.AppendChild(xmlDocume ...

  3. 《从0到1学习Flink》—— Data Sink 介绍

    前言 再上一篇文章中 <从0到1学习Flink>-- Data Source 介绍 讲解了 Flink Data Source ,那么这里就来讲讲 Flink Data Sink 吧. 首 ...

  4. C++中的引用和指针

    引用和指针有何区别?何时只能使用指针而不能使用引用?    引用是一个别名,不能为 NULL 值,不能被重新分配:指针是一个存放地址的变量.当需要对变量重新赋以另外的地址或赋值为 NULL 时只能使用 ...

  5. WAS 查看服务状态

    进入目录下/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin 查看服务状态命令# ./serverStatus.sh 服务名 例如: [root@lo ...

  6. base、self标签

    以新的窗口打开页面 self在自己的窗口打开

  7. SpringBoot JUnit4的断言和注解

    Junit4的断言常用方法: assertArrayEquals( new Object[]{ studentService.likeName("小明2").size() > ...

  8. C#运算符、控制流

    1 运算符 1.1 一元运算符: -(负号).+(正号):可以省略 1.2 二元运算符:     优先级,*(乘)./(除).%(取余).+(加).-(减).=(赋值) 二元赋值运算符,=.+=.-= ...

  9. 阻止Bootstrap 模态框(Modal)点击空白处时关闭

    默认情况下点击空白处时会关闭模态框,添加data-backdrop="static"后可以阻止关闭

  10. Webstrom使用手册小记

    全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/10883350.html,多谢~=.= 1.从git上拉取项目 或者 2.切换分支(webstro ...