【Django】聚合查询——聚合和其他 QuerySet 子句(filter() 、 exclude()、order_by()、values())
warning:
这篇文章距离上次修改已过411天,其中的内容可能已经有所变动。
在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()返回的是一个字典,包含一个或多个键值对,键通常是聚合函数的名称,值是计算出来的聚合值。
评论已关闭