2014-12-13 29 views
0

我一直在研究這一段時間,看着許多stackoverflow的問題,並通過aggregation docs 我需要獲取按日期分組的PropertyImpressions的數據集。這裏是PropertyImpression型號:Django按日期獲得行數

#models.py 
class PropertyImpression(models.Model): 
    ''' 
    Impression data for Property Items 
    ''' 
    property = models.ForeignKey(Property, db_index=True) 
    imp_date = models.DateField(auto_now_add=True) 

我曾嘗試查看代碼的這麼多的變化,而是因爲我認爲是最合理的,簡單的代碼,它根據文檔,應將例子我張貼此代碼做我想做的事情。

#views.py 
def admin_home(request): 
    ''' 
    this is the home dashboard for admins, which currently just means staff. 
    Other users that try to access this page will be redirected to login. 
    ''' 
    prop_imps = PropertyImpression.objects.values('imp_date').annotate(count=Count('id')) 

    return render(request, 'reportcontent/admin_home.html', {'prop_imps':prop_imps}) 
在模板中使用{{prop_imps}}變量時

然後,它給我的PropertyImpressions的名單,而是由雙方imp_date和財產進行分組。我需要這個只按imp_date進行分組,並根據values docs添加.values('imp_date')它只是按該字段分組?

當離開prop_imps變量中的.annotate時,它給了我一個所有imp_dates的列表,這些列表非常接近,但是當我通過日期字段進行分組時,出於某些原因,它們都由imp_date和property組成。

回答

1

也許您已經在PropertyImpression模型中定義了默認排序?

在這種情況下,你應該添加ORDER_BY()註釋重置密碼:

prop_imps = PropertyImpression.objects.values('imp_date').order_by() \ 
             .annotate(count=Count('id')) 

explained in Django documentation here:這是出於對ORDER_BY()部分提到

場在選擇輸出數據時使用查詢集(或者在模型的默認排序中使用的查詢集),即使它們沒有在values()調用中另行指定。這些額外的字段用於將「喜歡的」結果組合在一起,並且可以使其他相同的結果行看起來是分開的。這顯示出來,特別是在計算事物時。

+0

就是這樣,謝謝! – awwester 2014-12-13 17:36:32

+0

沒問題。我剛剛在Django文檔中找到了詳細的解釋,我更新了我的答案。 – pchiquet 2014-12-13 17:46:40

+0

ahhh謝謝。這就說得通了。 – awwester 2014-12-13 18:01:26