Django丨聚合与分组查询

本文介绍了Django中的聚合查询、分组查询和F()、Q()查询方法。聚合查询用于计算一组值的平均、最大、最小等统计值;分组查询结合annotate和values(values_list)实现按字段分组;F()查询允许比较模型实例内不同字段;Q()查询则支持更复杂的逻辑组合,如OR条件。
摘要由CSDN通过智能技术生成

多表实例


聚合查询

聚合查询函数时对一组值执行计算,并返回单个值

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

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

聚合查询返回值的数据类型是字典。

聚合函数aggregate()是QuerySet的一个终止子句,生成的一个汇总值,相当于count()。

使用aggregate()后,数据类型就变为字典,不能再使用QuerySet数据类型的一些API了。

返回的字典中:键的名称默认是(属性名称加上__聚合函数名),值是计算出来的聚合值

要自定义返回字典的键的名称,可以起别名:

aggregate(别名 = 聚合函数名("属性名称"))

实例

  • 计算所有图书的平均价格
from django.db.models import Avg, Max, Min, Count, Sum  #   引入函数
...
res = models.Book.objects.aggregate(Avg("price"))
print(res, type(res))
...


##### 输出 #####
{
   'price_avg': Decimal('200.000000')} <class 'dict'>
  • 计算所有图书的数量,最贵价格和最便宜价格
res=models.Book.objects.aggregate(c=Count("id"),max=Max("price"),m
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值