【Django】聚合查询——聚合和其他 QuerySet 子句(filter() 、 exclude()、order_by()、values())
在Django中,我们可以使用aggregate()
函数来进行聚合查询,同时也可以结合使用filter()
、exclude()
、order_by()
等QuerySet子句来对查询结果进行过滤、排序等操作。
以下是一个使用aggregate()
进行聚合查询,并结合使用filter()
、order_by()
的例子:
from django.db.models import Sum, Avg
from myapp.models import MyModel
# 假设MyModel有一个名为value的字段
# 计算所有对象的value字段总和
total = MyModel.objects.aggregate(Sum('value'))
# 计算所有对象的value字段平均值
average = MyModel.objects.aggregate(Avg('value'))
# 筛选出value字段大于50的对象,并按value字段排序
filtered_and_sorted = MyModel.objects.filter(value__gt=50).order_by('value')
在这个例子中,我们首先使用aggregate()
来计算所有对象的value字段的总和和平均值。然后,我们使用filter()
来筛选出value字段大于50的对象,并使用order_by()
来按value字段进行排序。
注意:aggregate()
返回的是一个字典,包含一个或多个键值对,键通常是聚合函数的名称,值是计算出来的聚合值。
评论已关闭