• Django-聚合查询


    Django 使用聚合查询前要先从 django.db.models 引入 Avg、Max、Min、Count、Sum(首字母大写)。

    from django.db.models import Avg,Max,Min,Count,Sum  #   引入函数
    res = models.Book.objects.aggregate(Avg("price"))
    print(res, type(res))

    分组查询

    分组查询一般会用到聚合函数,所以使用前要先从 django.db.models 引入 Avg,Max,Min,Count,Sum(首字母大写)。

    from django.db.models import Avg,Max,Min,Count,Sum  #   引入函数

    返回值:

    分组后,用 values 取值,则返回值是 QuerySet 数据类型里面为一个个字典;分组后,用 values_list 取值,则返回值是 QuerySet 数据类型里面为一个个元组。

    MySQL 中的 limit 相当于 ORM 中的 QuerySet 数据类型的切片。

    annotate 里面放聚合函数。

    values 或者 values_list 放在 annotate 前面:values 或者 values_list 是声明以什么字段分组,annotate 执行分组。values 或者 values_list 放在annotate后面: annotate 表示直接以当前表的pk执行分组,values 或者 values_list 表示查询哪些字段, 并且要将 annotate 里的聚合函数起别名,在 values 或者 values_list 里写其别名。

    F() 查询

    F() 的实例可以在查询中引用字段,来比较同一个 model 实例中两个不同字段的值。

    之前构造的过滤器都只是将字段值与某个常量做比较,如果想要对两个字段的值做比较,就需要用到 F()。

    使用前要先从 django.db.models 引入 F:

    from django.db.models import F

    F 动态获取对象字段的值,可以进行运算。

    Django 支持 F() 对象之间以及 F() 对象和常数之间的加减乘除和取余的操作。

    修改操作(update)也可以使用 F() 函数。

    Q() 查询

    使用前要先从 django.db.models 引入 Q:

    from django.db.models import Q

    之前构造的过滤器里的多个条件的关系都是 and,如果需要执行更复杂的查询(例如 or 语句),就可以使用 Q 。

    Q 对象可以使用 & | ~ (与 或 非)操作符进行组合。

    优先级从高到低:~ & |。

    可以混合使用 Q 对象和关键字参数,Q 对象和关键字参数是用"and"拼在一起的(即将逗号看成 and ),但是 Q 对象必须位于所有关键字参数的前面。

  • 相关阅读:
    如何使用IDEA连接PostgreSQL数据库:从新手到高手的全面指南
    普洛斯数据中心发布DC Brain系统,科技赋能智慧化运营管理
    2022.9.29
    【云原生之k8s】Pod 基础概念
    Linux-SSH反向连接(内网穿透,打洞)
    【考研复习】《操作系统原理》孟庆昌等编著课后习题+答案——第三章
    PyTorch 与深度学习:入门指南
    【PL理论】(24) C- 语言:有块的作用域 | 更新的语法 | 新的语义域 | 环境 vs. 内存
    【C++】unordered_map和unordered_set
    微信小程序开发学习—Day2
  • 原文地址:https://blog.csdn.net/qw12320/article/details/136547836