你必須明白,你在做什麼是鏈接過濾器。
首先,您有一個帶有註釋票數的查詢集,如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 –