gpt4 book ai didi

使用时区规范按天进行 django 组查询

转载 作者:行者123 更新时间:2023-11-29 11:37:23 30 4
gpt4 key购买 nike

我有一个以 UTC 格式保存日期时间字段的模型:

class Order(models.Model):
created = models.DateTimeField(db_index=True, auto_now_add=True)
...

我需要计算过去 30 天内每天的订单数量,以用绘图表示它。

time_zone = 'Europe/Kiev'

date_to = datetime.date.today().strftime("%Y-%m-%d") + ' 23:59:59'
date_from = (datetime.date.today() - datetime.timedelta(days=29)).strftime("%Y-%m-%d") + ' 00:00:00'
date_range = (date_from, date_to)

data = Order.objects.filter(
created__range=date_range
).extra(
{'date': "date(created) AT TIME ZONE '{0}'".format(time_zone)}
).values('date').annotate(items=Count('id'))

但此调用仍按 UTC 日期对数据进行分组,这是错误的。我可以通过计算特定日期的订单数量来简单地检查一下:

data = Order.objects.filter(
created_range=('2016-05-03 00:00:00', '2016-05-03 23:59:59')
).count()

有什么方法可以在一次调用中正确地使用时区创建数据库组项目,因为循环 30 天并进行 30 次调用很慢?

使用 django 1.8.7 和 postgres 9.4.4.1

最佳答案

事实证明,extra({...}) 中有一些错误。

所以

extra({'date': "date(created) AT TIME ZONE '{0}'".format(time_zone)}

应该改为

extra(select={'date': "date(goods_order.created AT TIME ZONE '{0}')".format(time_zone))

goods_order.created数据库_表名字段名

关于使用时区规范按天进行 django 组查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37249974/

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