2012-12-11 67 views
0

我有以下型號:註釋SQLite中

class Model(...): 
    date = DateField() 
    user = ForeignKey() 
    data = ForeignKey() 
    time = IntegerField() 

我想騰出時間字段的總和爲每個用戶對一個單一的數據,所以我做的:

Model.objects.filter(date=..., data=...).values('user_id').annotate(time=Sum('time')) 

,但我接收結果如下:

[{'user_id':1,'time':20},{'user_id':1,'time':10},{'user_id':2,'time': 20}]

所以分組不起作用。我檢查了由django生成的查詢,我不知道爲什麼django使用日期和數據進行分組,而不僅僅是用戶。我做錯了什麼或這只是SQLite的問題?

回答

5

您應該追加.order_by()您的查詢設置清除默認模型排序。

爲您的代碼:

(Model.objects.filter(date=…, data=…) 
       .values('user_id') 
       .annotate(time=Sum('time')) 
       .order_by())      # <---- Here 

這是充滿default ordering doc warning解釋說:

「只說會不太工作按名稱默認排序將 也扮演一個角色。在分組中......你應該......清除查詢中的任何順序。「

+0

49秒接受:) – szaman

+1

很高興幫助你。 – danihp

+0

很好的答案,但你從哪裏得到這個包裝? –