0
我在這些查詢的結果混淆:Django的註釋計數查詢輸出
>>> [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
。
誰能解釋爲什麼第二次查詢工作,但不是第一?
謝謝!
但正如我在文檔中提到,它應該工作? – Ahsan
@Ahsan:您在文檔中引用的示例在'ManyToManyField'上使用註釋,因此您可以在不分組的情況下爲單條記錄計數> 1。對於數據庫表中實際列的「普通」字段,顯然每行只能有1個值,而不需要按某些東西進行分組。 –
@ BERES Botond:我還試圖相同文檔'>>> [在Album.objects.annotate ge.c爲GE(C =計數( '流派'))]' 輸出:'[1,1,1 ,1,1,1,1,1]'這裏'genre'有'ManyToManyField'與'Album'的關係。和它的工作原理,當我沒有'>>> [GE [ 'C']爲GE在Album.objects.values( '流派')註釋(C =計數( '流派'))。]' 輸出:'[1 ,6,1]' – Ahsan