我有一个HTML表单,该表单以如下格式返回两个日期:2019-10-15。 当我检查日期返回的type()时,结果为“ str”
如何在Django查询中使用此字符串?
代码:
start = request.POST['from']
end = request.POST['to']
foo = bar.objects.filter(dispatch_date = ??)
答案 0 :(得分:2)
您可以使用range进行日期过滤
您可以使用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()
答案 1 :(得分:1)
VIEWS.PY
<TargetFrameworks>netstandard2.0;netcoreapp3.0;net461;net472</TargetFrameworks>
HTML
def date_page(request):
f_date = request.GET.get("f_date")
t_date = request.GET.get("t_date")
date_queryset = Add.objects.filter(date__range=(f_date, t_date))
for i in date_queryset:
print (i.budget, i.date)
return render (request , 'date_page.html',{'date_queryset':date_queryset})
答案 2 :(得分:0)
您必须根据“模型”将日期转换为所需格式,例如:
start = request.POST['from']
end = request.POST['to']
start_date = datetime.strptime(start, "%Y-%m-%d %H:%M:%S.%f")
end_date = datetime.strptime(end, "%Y-%m-%d %H:%M:%S.%f")
foo = bar.objects.filter(date__range=[start_date, end_date])
"%Y-%m-%d %H:%M:%S.%f
是您必须根据模型,如何定义字段而更新的格式。