gpt4 book ai didi

python - Django 在一个日期范围内取平均值

转载 作者:可可西里 更新时间:2023-11-01 08:34:52 24 4
gpt4 key购买 nike

我在 Django 中构建了一个简单的正常运行时间监控应用程序,用于检查网站是否未响应 ping 请求。它在“dt”列中存储被 ping 时的时间戳,在“ms”列中存储毫秒响应时间。该站点每分钟被 ping 一次,并将一个条目放入数据库中。

Django 模型如下所示:

class Uptime (models.Model):
user = models.ForeignKey(User)
dt = models.DateTimeField()
ms = models.IntegerField()

我想一次从 dt 列中抓取一天,并计算当天的 ms 响应时间的平均值。即使每天有 1440 个条目,我也想捕获这一天(例如 4-19-2013)并获得平均 ms 响应时间。我在下面使用的代码无疑是错误的,但我觉得我在正确的轨道上。我怎样才能让它发挥作用?

       output_date = Uptime.objects.filter(user = request.user).values_list('dt', flat = True).filter(dt__range=(startTime, endTime)).order_by('dt').extra(select={'day': 'extract( day from dt )'}).values('day')
output_ms = Uptime.objects.filter(user = request.user).filter(dt__range=(startTime, endTime)).extra(select={'day': 'date( dt )'}).values('day').aggregate(Avg('ms'))

谢谢!

最佳答案

您需要注释以进行分组。 Django 在 orm 中没有任何用于仅提取日期的内容,因此您需要向查询添加一个“额外”参数,该参数指定仅使用日期。然后,您仅选择这些值并进行注释。

尝试以下操作:

Uptime.objects.filter(user=request.user).extra({'_date': 'Date(dt)'}).values('_date').annotate(avgMs=Avg('ms'))

这应该会为您提供如下列表:

[{'_date': datetime.date(2012, 7, 5), 'avgMs': 300},{'_date': datetime.date(2012, 7, 6), 'avgMs': 350}]

关于python - Django 在一个日期范围内取平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16106721/

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