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。

您可以这样尝试:

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(进行筛选。

最新更新