django - 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
)进行过滤。
推荐阅读
- php - 编辑我的 htaccess 文件后,我的网站返回 500 internal server error
- javascript - 如何使用基于数组的 HTML 和 JavaScript 对图像和描述进行重新排序?
- sql - 如何将值从两个表中插入到表中?
- yesod - 有没有办法使用脚手架将多个 Hamlet 和 Cassius 文件拉入网页?
- vba - 导出和导入所有模块和用户表单(不能访问 VbaProject.OTM)
- tableau-api - Tableau 对数工作表显示不一致
- javascript - 以角度模式输入将不允许我输入
- python - 将 tkinter/Tkinter 导入为“Tk”还是“tk”?
- azure - UserContext类的AccountId、AuthenticatedUserId和Id有什么区别?
- python - 在 python 中,如何获取用户的输入并在输入后跳转到不同的行?