Django注释Count查询输出

时间:2011-10-26 15:53:41

标签: python django annotations count

我对这些查询的结果感到困惑:

>>> [f.count for f in Favourite.objects.annotate(count = Count('object_id'))]
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

,第二个是

>>> [f['count'] for f in Favourite.objects.values('object_id').annotate(count=Count('object_id'))]
[1, 5, 2, 1, 4, 2, 2, 3]

但根据django docs,第一个查询应该可以正常运行,Favourite对象的计数为object_id

任何人都可以解释为什么第二个查询有效,但不是第一个?

谢谢!

1 个答案:

答案 0 :(得分:4)

第二个是在object_id上执行group by。这是预期的行为。第一个是简单地计算数据库中每一行的object_id。