1

我正在创建一个仅显示截止日期尚未过去的帖子的视图。为此,我添加了以下我的 views.py 文件:

current_posts = Posts.objects.filter(post_name=post, deadline__range=[date.today(), "2999-12-31"]).order_by('deadline')

这样,我只能显示截止日期范围在今天和 2999 年 12 月 31 日之间的帖子。但是我收到以下错误,并且根本没有帖子显示:

RuntimeWarning: DateTimeField OfferedFunds.deadline received a naive datetime (2999-12-31 00:00:00) while time zone support is active.
  RuntimeWarning)

过去发布的解决方案让我尝试以下也不起作用:

timezone.now()
current_posts = Posts.objects.filter(post_name=post, deadline__range=[timezone.now(), "2999-12-31"]).order_by('deadline')

起作用的是,如果不是输入:timezone.now(),而是输入一个实际日期,例如“2015-10-10”,但这会违背目的。关于如何解决这个问题的任何想法?

4

3 回答 3

3

而不是检查范围,你可以做deadline__gte=timezone.now()

此页面有更多信息:https ://docs.djangoproject.com/en/stable/ref/models/querysets/#gte

于 2015-10-28T03:58:07.643 回答
0

我今天在工作中确实遇到了这个问题!基本上,该deadline__range=[date.today(), '2999-10-10']线路在第一个时隙中具有 UTC 感知时间,在第二个时隙中具有 UTC 不感知时间。让我引导您阅读帮助我的帖子How to make an unware datetime timezone aware in python。有一些纯 python 解决方案和一些 django 解决方案,但我想你会在那里找到你需要的!

于 2015-10-28T03:55:06.123 回答
0

在您的settings.pysetUSE_TZ = False中,这样应该可以解决警告。就我而言,我想在全球范围内使用本地日期时间,这就是我最终要做的。干杯!

于 2019-01-31T23:57:32.513 回答