Django - 上一小时的所有对象
Posted
技术标签:
【中文标题】Django - 上一小时的所有对象【英文标题】:Django - all objects from last hour 【发布时间】:2018-07-25 07:39:18 【问题描述】:我想获取上一小时的所有物品。例如:我有 13:58,我想获取从 13 到 14 的所有对象
这是我的代码:
now = datetime.datetime.now()
earlier = now - datetime.datetime(now.year, now.month, now.day, now.hour, 0,0)
MyModel.objects.filter(date__range=(earlier, now))
但我有一个错误:
RuntimeWarning:DateTimeField MyModel.date 收到一个天真的日期时间 (2018-02-14 17:16:58.478000) 时区支持处于活动状态。 运行时警告)
我的设置:
USE_TZ = True
TIME_ZONE = 'Europe/Warsaw'
【问题讨论】:
DateTimeField received a naive datetime的可能重复 【参考方案1】:您正在尝试将 天真 日期与时间感知日期进行比较。当timezone 在settings.py
中启用时,您应该使用django.utils.datetime.now()
而不是内置的datetime.datetime.now()
,这在进行比较或过滤时是幼稚的。
>>> from datetime import timedelta
>>> from django.utils import timezone
>>> this_hour = timezone.now().replace(minute=0, second=0, microsecond=0)
>>> one_hour_later = this_hour + timedelta(hours=1)
>>> MyModel.objects.filter(date__range=(this_hour, one_hour_later))
您可以查看the docs 以了解有关 Django 如何处理日期时间的更多信息。
【讨论】:
方法是这样,但我认为他想要从一小时开始的范围? earlier = now - timedelta(hours=1),当我有 13:58 时,更早的将是 12:58,但我想要 13以上是关于Django - 上一小时的所有对象的主要内容,如果未能解决你的问题,请参考以下文章