2015-05-15 51 views
0

我有兩個型號,ItemVoteDjango:我如何註釋ForeignKey關係中的值的總和?

class Item(models.Model): 
    name=CharField(max_length=75) 

class Vote(models.Model): 
    item = ForeignKey(Item) 
    value = IntegerField() 

我想提供項目列表的查詢集中的票值之和的順序。我想:

items = Item.objects.annotate(Sum('votes__value')).order_by('votes__value') 

但在情況下,我有兩票 - 一個value = 0和一個value = 1 - 我獲得兩個Item實例的queryset的,爲此item1 == item2

如何正確構造此查詢集?謝謝!

+1

它會更容易看到什麼是在項目,但作爲第一句話,應該不是很Item.objects.annotate (總和( 'votes__value'))。ORDER_BY( 'votes__value__sum')。 –

+0

@JulienGrégoire項目只有一個項目,名稱和兩票。一票有價值= 1,一票有價值= 0。數據庫中只有一個項目實例但我的調用返回兩個這一事實令我震驚! 立即嘗試您的解決方案。 – YPCrumble

+0

@JulienGrégoire明白了 - 正是我需要的,謝謝! – YPCrumble

回答

0

試試這個;

items = Item.objects.values('item').annotate(votes_value=Sum('votes')).order_by('votes') 

items = Item.objects.values('item').annotate(votes_value=Sum('votes')) 
0

試着這麼做:

Item.objects.annotate(votes_total=Sum('votes__value')).order_by('votes_total')