Django 查询集计数

3

我的模型:

class Device(models.Model):
    build = models.CharField()
    name = models.CharField()

如何构建查询集以获得具有不同构建的对象数量。

例如,如果有两个构建“build 1”和“build 2”,我希望输出告诉我

build 1 = 3
build 2 = 4

编辑:尝试了以下内容:

Device.objects.values('build').annotate(count=Count('pk'))

输出结果为:
[{'build': u'wed build'}, {'build': u'red build'}, ... ]

我不确定我理解这个问题。你想要一个能够输出那个的单一查询集吗? - Gonzalo
1
只是想找到一种更有效的方法。我可以迭代构建并获取计数,但我想看看是否有更好的方法来做到这一点。 - ellieinphilly
2个回答

9
from django.db.models import Count

Device.objects.values('build').annotate(count=Count('pk'))
# -> [{'build': '1', 'count': 3}, {'build': '2', 'count': 4}]

当然应该支持。如果一个mongo-django映射器不支持注释,我一点也不会感到惊讶。你将不得不使用MapReduce或迭代构建并获取计数。 - Pavel Anossov

4

一个简单的方法就是调用 count

>>> Device.objects.filter(build='1').count()
3
>>> Device.objects.filter(build='2').count()
4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接