Формы Django: Как я могу получить имена и фамилии из формы HTML? - PullRequest
0 голосов
/ 14 января 2010

В настоящее время форма поиска предназначена только для фамилии, и это вызывает проблемы при наличии более одной фамилии .

Это было отмечено здесь Энтони Хэтчкиным.

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

1 Ответ

3 голосов
/ 15 января 2010

В Джанго forms.Form обычно используются для этого:

forms.py:

from django import forms

class ContactForm(forms.Form):
    first_name = forms.CharField(max_length=100)
    last_name = forms.CharField(max_length=100)

Когда вы привыкнете, переключитесь на более сложную форму:

forms.py:

from django import forms

class ContactForm(forms.ModelForm):
    class Meta:
        model=Lawyer
        fields = 'first_name', 'last_name'

Что касается использования в шаблоне, прочитайте docs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...