python - 在查询过滤器中使用日期范围
问题描述
我有一个 HTML 表单,它以如下格式返回两个日期:2019-10-15。当我检查日期返回的 type() 时,结果是“str”
如何在我的 Django 查询中使用这个字符串?
代码:
start = request.POST['from']
end = request.POST['to']
foo = bar.objects.filter(dispatch_date = ??)
解决方案
您可以使用范围过滤日期
您可以像这样使用parse_date将字符串转换为日期。
from django.utils.dateparse import parse_date
start = request.POST['from']
start_date = parse_date(start)
end = request.POST['to']
end_date = parse_date(end)
foo = bar.objects.filter(date__range=(start_date,end_date))
parse_date
如果给定日期不是%Y-%m-%d
格式,函数将返回 None 因此在这种情况下,您可以像这样转换为日期
start = request.POST['from']
start_date = datetime.datetime.strptime(start, "%Y-%m-%d").date()
推荐阅读
- vim - 如何使用 Vim 8.1 的新终端/termpack 支持滚动浏览终端?
- ios - 文本组件在一定高度后不会呈现
- ms-access - Access Vba - 反转字符串的内容
- view - 从 bq cmd 工具执行现有的参数化 BigQuery 视图
- git - VSCode/Git 在 BranchA 中超过 5k 的新更改:提交,然后切换到 BranchB 并显示未跟踪的更改
- sql-server - Geometry.IsValidDetailed() 的替代方案
- javascript - 我可以对 KendoScheduler 数据源的数据进行硬编码吗?
- java - SOAP Header 简单调用
- c - C for Linux 中的全屏操作
- java - 从毫秒到天的 TimeUnit 转换不适合我