你必须明白,你在做什么是链接过滤器。
首先,您有一个带有注释票数的查询集,如annotate(votos_ok=Count('votomoderacion')).filter(votomoderacion__voto="1")
。
然后你用它注释了votes_ok
并像annotate(votos_ok=Count('votomoderacion')).filter(votomoderacion__voto="1")
那样对它进行了过滤,它给了你另一个过滤的查询集。
但在此之后,您添加了另一个筛选器annotate(votos_no_ok=Count('votomoderacion')).filter(votomoderacion__voto="0")
,它过滤了您从前一个筛选器获得的查询集。所以,在这种情况下,你没有得到你想要的结果。
如果你将它们分开,那么它们会更好。像:
total_votes= Vine.objects.annotate(votos_count=Count('votomoderacion'))
yes_votes= Vine.objects.annotate(votos_ok=Count('votomoderacion')).filter(votomoderacion__voto="1")
no_votes= Vine.objects.annotate(votos_no_ok=Count('votomoderacion')).filter(votomoderacion__voto="0")
加入这些查询集:
from itertools import chain
allvotes = list(chain(total_votes, yes_votes, no_votes))
为了澄清,你想要的计数:总票,赞成票,没有票? – Hamish
确切的,这就是我的查询集所需要的。 @Hamish –