📅  最后修改于: 2023-12-03 15:30:28.929000             🧑  作者: Mango
在Django中,我们通常会用到QuerySet来处理数据库查询。有时候我们会需要将查询结果按照某个字段进行分组,并对分组后的结果进行统计求和操作。这就需要我们用到Django QuerySet的group by和sum方法。
group by可以将QuerySet按照指定字段分组。例如我们有一个User表,该表有name和age两个字段。我们可以根据name分组:
users = User.objects.values('name').annotate(total=Count('id'))
for user in users:
print(user['name'], user['total'])
以上代码将会输出每个name的总数。
sum可以对QuerySet进行求和操作。例如我们有一个Order表,该表有price和count两个字段。我们可以对所有订单的总价进行求和:
total_price = Order.objects.aggregate(total=Sum('price'))['total']
以上代码将会输出所有订单的总价。
group by和sum还可以进行组合使用。例如我们要按照用户分组,并统计他们的购买总价:
users = User.objects.values('name').annotate(total_price=Sum('order__price'))
for user in users:
print(user['name'], user['total_price'])
以上代码将会输出每个用户的购买总价。
总体来说,group by和sum是QuerySet中非常强大的两个方法,可以帮助我们方便快捷地进行统计操作。