我对这些查询的结果感到困惑:
>>> [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
。
任何人都可以解释为什么第二个查询有效,但不是第一个?
谢谢!
答案 0 :(得分:4)
第二个是在object_id上执行group by
。这是预期的行为。第一个是简单地计算数据库中每一行的object_id。