2011-03-02 98 views
1

在django中,我有以下表格,並試圖按項目計算投票數。django中的註釋和聚合函數

class Votes(models.Model): 
    user = models.ForeignKey(User) 
    item = models.ForeignKey(Item) 


class Item(models.Model): 
    name = models.CharField() 
    description = models.TextField() 

我有以下查詢集

queryset = Votes.objects.values('item__name').annotate(Count('item')) 

返回與項目名稱和觀看次數而不是項目對象的列表。我怎樣才能設置它,使對象返回而不僅僅是字符串值?我一直在使用Manager和Queryset方法,正確的軌道?任何意見,將不勝感激。

回答

2

你可以試一下這個:

queryset = Votes.values.annotate(t_count=Count('item'))

要獲得第一投票對象的計數值:

queryset[0].t_count 

或獲取項目對象:

Item.objects.annotate(i_count=Count('votes')) 
+0

這將返回對象的數量,但不是我可以調用方法的對象本身。我如何鏈接正在聚合的實際對象? – thesteve 2011-03-13 23:47:33

+0

您可以訪問對象queryset [0] .user或第二個exmaple queryset [0] .name – Radovan 2011-03-15 07:38:07