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 - 上一小时的所有对象的主要内容,如果未能解决你的问题,请参考以下文章

获取所有相关的 Django 模型对象

Django:更改查询集中所有对象的字段值

获取今天日期的所有对象,django

django模板标签运行循环不是所有对象[重复]

Django中显示属于创建对象的所有属性值的方法?

Django 查询超过 5 小时的对象的日期时间