首页 > 解决方案 > Django __date 不适用于 date() 或字符串

问题描述

我有以下模型字段:

inbound_date = models.DateTimeField()

我想过滤日期,而不关心时间。我插入了两个测试对象,它们为 inbound_date 返回以下值:

2018-11-14 00:00:00+00:00
2018-11-15 08:37:09+00:00

但是我检索对象的所有尝试都失败了:

AppInbound.objects.filter(inbound_date__date=datetime.date(2018, 11, 15))

或者

AppInbound.objects.filter(inbound_date__date='2018-11-15')

但似乎都返回了一个空的 QuerySet。我唯一设法开始工作的是:

AppInbound.objects.filter(inbound_date__startswith='2018-11-15')

它返回最后一个对象,日期时间为 2018-11-15 08:37:09+00:00。

有人可以解释这里出了什么问题吗?

它是一个 MySQL 数据库,我们启用了 TZ。

标签: djangodatetime

解决方案


你可以这样尝试:

 AppInbound.objects.filter(inbound_date__lt=datetime.date(2018, 11, 15), inbound_date__gte=datetime.date(2018, 11, 14))  # will return objects for 14th November.

或者您可以查看有关如何过滤特定日期的答案

如果您只关心使用日期,则应在此处使用DateField :

inbound_date = models.DateField()

然后您应该能够使用日期对象(datetime.date)进行过滤。


推荐阅读