3
在Django中使用此類模型時,如何檢索30天條目,並計算當天添加了多少條。django最後30條包含計數的條目列表
class Entry(models.Model):
...
entered = models.DateTimeField(auto_now_add=True)
在Django中使用此類模型時,如何檢索30天條目,並計算當天添加了多少條。django最後30條包含計數的條目列表
class Entry(models.Model):
...
entered = models.DateTimeField(auto_now_add=True)
獲取過去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
是一本字典的鍵是今天之前的天數,和值都在這一天的條目數。
感謝,收到此錯誤 「捕獲的異常而呈現:壓縮參數#2必須支持迭代」以模板爲: {%爲關鍵,以計數%值} {{鍵}} {{值} } {%endfor%}「 – bocca 2010-01-03 11:54:37
嘗試'{%爲鍵,在counts.items%中的值}' – 2010-01-03 12:53:28
得到」在呈現時捕獲異常:'int'對象不可迭代「 這是在視圖中好嗎字典: return render_to_response('page.html',{'counts':counts}, context_instance = RequestContext(request) ) – bocca 2010-01-03 13:16:30