【发布时间】:2010-01-14 20:29:34
【问题描述】:
目前,搜索表单仅用于姓氏,这会导致超过one last name 的问题。
Antony Hatchkin 注意到 here。
为了解决这个问题,我想添加一个包含姓氏和名字的搜索表单,并编写一个新的搜索函数 search2()。
新功能会是这个样子吗?
def search2(request):
q_last = request.GET.get('q_last', '')
q_first = request.GET.get('q_first','')
lawyers = Lawyer.objects.filter(last__iexact=q_last).first__icontains=q_first)
....
如果是这样,我如何从表单中获取 q_last 和 q_first?
这是我现在使用的视图:
def search(request):
q = request.GET.get('q', '')
if q:
lawyers = Lawyer.objects.filter(last__iexact=q)
if len(lawyers)==0:
return render_to_response('not_in_database.html', {'query': q})
if len(lawyers)>1:
return render_to_response('more_than_1_match.html', {'lawyers': lawyers, 'query': q})
q_school = Lawyer.objects.filter(last__iexact=q).values_list('school', flat=True)
q_year = Lawyer.objects.filter(last__iexact=q).values_list('year_graduated', flat=True)
lawyers1 = Lawyer.objects.filter(school__iexact=q_school[0]).filter(year_graduated__icontains=q_year[0]).exclude(last__icontains=q)
return render_to_response('search_results.html', {'lawyers': lawyers1, 'query': q})
else:
return HttpResponse('Please submit a search term.')
编辑
这样的表单中的新字段?
First name:<form action="/search/" method="get">
<input type="text" name="q_first">
<br />
Last name:<input type="text" name="q_last">
<input type="submit" value="Search">
</form>
【问题讨论】:
-
那么您需要在表单中添加一个新字段,这里我提供了 django 文档中有关使用表单的正确方法的相关引用:stackoverflow.com/questions/2059374/…
-
你说的也行。 django 表单库是一组非常好的帮助器,用于生成、验证和重新填充 HTML 表单,甚至可以直接使用 CRUD 内容(模型表单),但如果你也可以使用 request.GET 或 request.POST 来访问提交的值不想使用表格。但使用表格。严重地。阅读其他人发布的文档。了解你的工具。
标签: django django-forms