В настоящее время форма поиска предназначена только для фамилии, и это вызывает проблемы при наличии более одной фамилии .
Это было отмечено здесь Энтони Хэтчкиным.
Чтобы решить проблему, я хочу добавить форму поиска с фамилией и именем и написать новую функцию поиска 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>