2010-01-02 28 views

回答

11

獲取過去30天的條目很簡單:

today = datetime.date.today() 
thirty_days_ago = today - datetime.timedelta(days=30) 
entries = Entry.objects.filter(entered__gte=thirty_days_ago) 

計數多少的每一天是非常棘手的,因爲你存儲時間戳,而不是天 - 如果你使用將DateField你可以做一個簡單的聚合。也許是做的最好的事情就是遍歷和每天數得過來:

from collections import defaultdict 
counts = defaultdict(int) 
for entry in entries.order_by('entered'): 
    date = entry.entered.date() 
    days = (today - date).days 
    counts[days] += 1 

現在counts是一本字典的鍵是今天之前的天數,和值都在這一天的條目數。

+0

感謝,收到此錯誤 「捕獲的異常而呈現:壓縮參數#2必須支持迭代」以模板爲: {%爲關鍵,以計數%值} {{鍵}} {{值} } {%endfor%}「 – bocca 2010-01-03 11:54:37

+0

嘗試'{%爲鍵,在counts.items%中的值}' – 2010-01-03 12:53:28

+0

得到」在呈現時捕獲異常:'int'對象不可迭代「 這是在視圖中好嗎字典: return render_to_response('page.html',{'counts':counts}, context_instance = RequestContext(request) ) – bocca 2010-01-03 13:16:30