gpt4 book ai didi

Django查询集按时间间隔聚合

转载 作者:行者123 更新时间:2023-12-02 00:23:22 27 4
gpt4 key购买 nike

嗨,我正在编写一个 Django View ,它输出用于在客户端绘制图形的数据(高图表)。该数据是每天记录一次给定参数的气候数据。

我的查询是这样的:

format = '%Y-%m-%d' 
sd = datetime.datetime.strptime(startdate, format)
ed = datetime.datetime.strptime(enddate, format)

data = Climate.objects.filter(recorded_on__range = (sd, ed)).order_by('recorded_on')

现在,随着范围的增加,数据集显然变大了,这在图表上表现不佳(除了显着减慢速度之外)。

有没有办法将我的数据分组为时间段的平均值 - 特别是每个月的平均值或每年的平均值?

我意识到这可以在此处提到的 SQL 中完成: django aggregation to lower resolution using grouping by a date range

但我想知道 Django 本身是否有一种方便的方法。

或者直接修改数据库并使用脚本从时间戳填充月份和年份字段可能更好?

非常感谢任何帮助。

最佳答案

您是否尝试过使用 django-qsstats-magic (https://github.com/kmike/django-qsstats-magic)?

它使图表变得非常容易,这是他们文档中的时间序列示例:

from django.contrib.auth.models import User
import datetime, qsstats

qs = User.objects.all()
qss = qsstats.QuerySetStats(qs, 'date_joined')

today = datetime.date.today()
seven_days_ago = today - datetime.timedelta(days=7)

time_series = qss.time_series(seven_days_ago, today)
print 'New users in the last 7 days: %s' % [t[1] for t in time_series]

关于Django查询集按时间间隔聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9950573/

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