如何解决如何使用特定模板格式对 DateTimeFields 进行基于文本的过滤?
我有一个表格,其中包含使用 django 模板语言显示的 CharFields 和 DateTimeFields。日期时间字段以“2020 年 8 月 18 日下午 6:33”的格式显示。有没有一种简单的方法可以根据特定格式对 DateTimeFields 进行基于文本的过滤器/查询?例如,搜索“aug”或“Aug”或“Aug.18”或“2020”应该会找到该条目。
我尝试过 icontains,但这似乎适用于底层格式,而不是显示格式。例如,搜索“2020-08”会找到该条目,但搜索“Aug”则不会。
作品:
Entry.objects.get(created__icontains='2020')
Entry.objects.get(created__icontains='2020-08')
Entry.objects.get(created__icontains='33')
不起作用:
Entry.objects.get(created__icontains='Aug')
Entry.objects.get(created__icontains='6:33')
Entry.objects.get(created__icontains='p.m')
- 有没有办法使用特定的日期时间显示格式进行搜索?
- 基础 DateTimeField 是什么格式?是否依赖数据库?
2的部分答案:底层格式似乎是格式中的UTC “2020-05-12 18:58:23.210862+00”。在任何文本上使用 icontains 都有效。
为了澄清起见,我们的想法是搜索具有相同文本的所有字段(日期时间和字符串)。因此,“Aug”应返回日期字段为“Aug 13”或字符串字段为“Augustine”的行。有点像一般的谷歌搜索。
解决方法
您已将字符串更改为日期时间,
像这样:date = datetime.date(2020,8,3)
,这是你可以使用的:
- 日期:
Entry.objects.filter(created__date=datetime.date(2005,1,1))
- 年份:
Entry.objects.filter(created__year= 2020)
- 月:
Entry.objects.filter(created__month=8)
- 小时:
Event.objects.filter(created__hour=6)
- 分钟:
Event.objects.filter(created__minute=29)
- 第二个:
Event.objects.filter(created__second=31)
您可以在此处查看有关日期查询集的更多信息:https://docs.djangoproject.com/en/3.1/ref/models/querysets/#year
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。