首页 > 解决方案 > 在查询过滤器中使用日期范围

问题描述

我有一个 HTML 表单,它以如下格式返回两个日期:2019-10-15。当我检查日期返回的 type() 时,结果是“str”

如何在我的 Django 查询中使用这个字符串?

代码:

start = request.POST['from']
end = request.POST['to']

foo = bar.objects.filter(dispatch_date = ??)

标签: pythondjango

解决方案


您可以使用范围过滤日期

您可以像这样使用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()

推荐阅读