首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django models日期日过滤到前一天

django models日期日过滤到前一天
EN

Stack Overflow用户
提问于 2017-12-01 06:42:25
回答 1查看 64关注 0票数 0

我有一个带有DateTimeField的机型,我已经将其设置为2017年11月20日

代码语言:javascript
复制
In [23]: my_obj.date_field
Out[23]: datetime.datetime(2017, 11, 20, 0, 0, 1, tzinfo=datetime.timezone.utc)

但是,当我尝试通过选择date_field's day = 20的对象进行检索时,Django没有找到该元素

代码语言:javascript
复制
In [11]: MyObj.objects.filter(date_field__day=20)
Out[11]: <QuerySet []>

但是,如果我选择date_field's day = 19的元素,它会找到我的对象。

代码语言:javascript
复制
In [12]: Regime.objects.filter(start_date__day=19)
Out[12]: <QuerySet [my_obj]>

有人能解释这种奇怪的行为吗?这是预期的行为吗?

EN

回答 1

Stack Overflow用户

发布于 2017-12-01 06:56:08

这显然是一个时区问题,因为您的时间设置为0, 0, 1

您自己的时区不是UTC,所以Django告诉您没有对象属于您的11月20日这一天是正确的。

这取决于你的应用,这可能是也可能不是预期的行为。例如,如果您正在跟踪论坛帖子,那么在您的时区查看内容而不是在其他时区查看内容是有意义的。

如果您想避免所有这些,因为您将字段命名为"date_field",我假设您不关心时间,所以只需使用DateField而不是DateTimeField

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47583844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档