📜  django querset group by sum - Python (1)

📅  最后修改于: 2023-12-03 14:40:46.502000             🧑  作者: Mango

Django QuerySet group_by sum

在Django中,我们可以使用QuerySet来执行各种数据库操作。本文将介绍如何对QuerySet进行分组(group_by)和求和(sum)操作。

1. 分组(group_by)

使用Django的annotate方法实现分组操作。例如,我们有一个Book模型,它有一个category字段,我们希望按照category字段的值对书籍进行分组:

from django.db.models import Count

books = Book.objects.values('category').annotate(total=Count('id'))

上述代码将按照category字段的值对书籍进行分组,并计算每个分组的记录数(即每个分类中有多少本书),返回一个包含categorytotal两个字段的QuerySet。

2. 求和(sum)

要对QuerySet进行求和操作,使用aggregate方法。例如,我们想要计算书籍的总价格,可以这样做:

from django.db.models import Sum

total_price = Book.objects.aggregate(Sum('price'))

上述代码将对所有书籍的价格进行求和操作,并返回一个包含总价格的字典。

3. 分组+求和操作

如果我们既想要对书籍按照分类进行分组,又需要计算每个分类下书籍的总价格,可以这样实现:

from django.db.models import Sum

books = Book.objects.values('category').annotate(total_price=Sum('price'))

上述代码将按照分类分组,并计算每个分类下所有书籍的价格总和,返回一个包含categorytotal_price两个字段的QuerySet。

以上就是Django QuerySet中分组和求和操作的介绍,希望能对你有所帮助。