要按列值对查询集进行分组,可以使用Django的annotate()和values()方法。下面是一个示例代码:
from django.db.models import Count
# 假设有一个模型类Book,包含字段title和author
class Book(models.Model):
title = models.CharField(max_length=100)
author = models.CharField(max_length=100)
# 获取按作者分组的结果
grouped_books = Book.objects.values('author').annotate(total=Count('id'))
# 打印分组结果
for book in grouped_books:
print(book['author'], book['total'])
在上面的示例中,使用values('author').annotate(total=Count('id'))
对Book模型进行查询。通过values('author')
指定以author
字段的值为分组依据,然后使用annotate(total=Count('id'))
对每个分组进行计数,并将计数结果命名为total
。最后,可以通过遍历grouped_books
来访问分组结果。
请确保在使用示例代码时正确导入Django模型和相关模块。