在Django中使用这样的模型,如何在30天的条目中计算当天添加的数量。
class Entry(models.Model):
...
entered = models.DateTimeField(auto_now_add=True)
答案 0 :(得分: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
是一个字典,其键是今天之前的天数,值是当天的条目数。