gpt4 book ai didi

python - 使用 Django ORM 查询基于日期的值

转载 作者:太空宇宙 更新时间:2023-11-04 11:05:35 31 4
gpt4 key购买 nike

我有一堆具有值和日期字段的对象:

obj1 = Obj(date='2009-8-20', value=10)
obj2 = Obj(date='2009-8-21', value=15)
obj3 = Obj(date='2009-8-23', value=8)

我要返回:

[10, 15, 0, 8]

或者更好的是,截至该点的总和:

[10, 25, 25, 33]

我最好直接从数据库中获取这些数据,否则我可以使用 forloop 非常轻松地进行总计。

我正在使用 Django 的 ORM 和 Postgres

编辑:

请注意,我的示例只涵盖了几天,但在实践中,我有数百个对象涵盖了几十年......我想要做的是创建一个折线图来显示所有对象的总和我的对象随着时间的推移而增长(很长一段时间)

最佳答案

这个没有经过测试,因为设置一个 Django 表来测试有点太麻烦了:

from datetime import date, timedelta
# http://www.ianlewis.org/en/python-date-range-iterator
def datetimeRange(from_date, to_date=None):
while to_date is None or from_date <= to_date:
yield from_date
from_date = from_date + timedelta(days = 1)

start = date(2009, 8, 20)
end = date(2009, 8, 23)
objects = Obj.objects.filter(date__gte=start)
objects = objects.filter(date__lte=end)

results = {}
for o in objects:
results[o.date] = o.value

return [results.get(day, 0) for day in datetimeRange(start, end)]

这避免了每天运行单独的查询。

关于python - 使用 Django ORM 查询基于日期的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1371280/

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