gpt4 book ai didi

django - 获取过去30天内每天创建的对象

转载 作者:行者123 更新时间:2023-12-04 04:55:14 24 4
gpt4 key购买 nike

我正在寻找一种快速的方法来分别对过去30天内创建的模型对象进行计数。例如:

27.07.2013 (today) - 3 objects created
26.07.2013 - 0 objects created
25.07.2013 - 2 objects created
...
27.06.2013 - 1 objects created

我将在Google Charts API中使用此数据。您是否知道如何有效地获取此数据?

最佳答案

items = Foo.objects.filter(createdate__lte=datetime.datetime.today(), createdate__gt=datetime.datetime.today()-datetime.timedelta(days=30)).\
values('createdate').annotate(count=Count('id'))

这将(1)过滤结果以包含最近30天,(2)仅选择createdate字段,(3)计算ID,并按所有选定字段(即createdate)分组。这将返回以下格式的词典列表:
[
{'createdate': <datetime.date object>, 'count': <int>},
{'createdate': <datetime.date object>, 'count': <int>},
...
]

编辑:

我不相信有一种方法可以仅通过SQL来获取所有日期,即使是带有 count == 0的日期也是如此。您必须通过python代码插入每个缺少的日期,例如:
import datetime

# needed to use .append() later on
items = list(items)

dates = [x.get('createdate') for x in items]

for d in (datetime.datetime.today() - datetime.timedelta(days=x) for x in range(0,30)):
if d not in dates:
items.append({'createdate': d, 'count': 0})

关于django - 获取过去30天内每天创建的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17895214/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com