📅  最后修改于: 2023-12-03 14:40:46.502000             🧑  作者: Mango
在Django中,我们可以使用QuerySet来执行各种数据库操作。本文将介绍如何对QuerySet进行分组(group_by)和求和(sum)操作。
使用Django的annotate
方法实现分组操作。例如,我们有一个Book
模型,它有一个category
字段,我们希望按照category
字段的值对书籍进行分组:
from django.db.models import Count
books = Book.objects.values('category').annotate(total=Count('id'))
上述代码将按照category
字段的值对书籍进行分组,并计算每个分组的记录数(即每个分类中有多少本书),返回一个包含category
和total
两个字段的QuerySet。
要对QuerySet进行求和操作,使用aggregate
方法。例如,我们想要计算书籍的总价格,可以这样做:
from django.db.models import Sum
total_price = Book.objects.aggregate(Sum('price'))
上述代码将对所有书籍的价格进行求和操作,并返回一个包含总价格的字典。
如果我们既想要对书籍按照分类进行分组,又需要计算每个分类下书籍的总价格,可以这样实现:
from django.db.models import Sum
books = Book.objects.values('category').annotate(total_price=Sum('price'))
上述代码将按照分类分组,并计算每个分类下所有书籍的价格总和,返回一个包含category
和total_price
两个字段的QuerySet。
以上就是Django QuerySet中分组和求和操作的介绍,希望能对你有所帮助。