关于python:Django – 来自最后一小时的所有对象

Django - all objects from last hour

我想从最后一小时得到所有物品。 例如:我有13:58而且我想从13到14获得所有对象

这是我的代码:

1
2
3
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 received a naive datetime
(2018-02-14 17:16:58.478000) while time zone support is active.
RuntimeWarning)

我的设置:

1
2
USE_TZ = True
TIME_ZONE = 'Europe/Warsaw'


您正试图将天真日期与具有时间意识的日期进行比较。 在settings.py中启用时区时,应该使用django.utils.datetime.now()而不是内置datetime.datetime.now(),这在进行比较或过滤时是天真的。

1
2
3
4
5
6
>>> 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))

您可以查看文档以了解有关Django如何处理日期时间的更多信息。