Шаблоны Django: Как использовать поле в модели в шаблоне? - PullRequest
2 голосов
/ 20 января 2010

В этом шаблоне

<body><p>You searched for: <strong>{{ first }} {{ last }}</strong></p>

{% if lawyers %}
    <p>There are {{ lawyers|length }} schoolmates of <strong>{{ first }} {{ last }}</strong> in the database:</p>
    <ul>
        {% for lawyer in lawyers %}
        <li> {{ lawyer.first }} {{ lawyer.last }} {{ lawyer.firm_name }} {{ lawyer.school }} {{ lawyer.year_graduated }}</li>
        {% endfor %}
    </ul>

{% else %}
    <p><strong>{{ first }} {{ last }}</strong> has no classmates in the database. Try another lawyer.</p>
{% endif %} 

Я беру {{ first }} и {{ last }} из формы поиска, но не другие параметры, такие как year_graduated.

Но я хочу сказать:

<p>You searched for: <strong> {{ first }} {{ last }}, class of {{ year_graduated }} </strong> </p>

Как я могу использовать lawyer.year_graduated в шаблоне, даже если его нет в форме поиска?

См. мой предыдущий вопрос о функции просмотра.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 20 января 2010

Что ж, проще всего было бы добавить year_graduated к контексту dict.

return render_to_response('search_results.html', {'lawyers': lawyers1, 'last': last_name, 'first': first_name, 'year_graduated': q_year[0], 'form': form})
0 голосов
/ 20 января 2010

Весь вид может использовать некоторую работу, чтобы немного упростить для себя. Вот несколько быстрых изменений (включая обсуждаемые в другом вопросе):

def search_form(request):
    if request.method == 'POST':
        search_form = SearchForm(request.POST)
        if search_form.is_valid():
            last_name = search_form.cleaned_data['last_name']
            first_name = search_form.cleaned_data['first_name']
            fields = {}
            if last_name:
                lawyers = fields['last__iexact'] = last_name
            if first_name:
                lawyers = fields['first__icontains'] = first_name
            try:
                searched_lawyer = Lawyer.objects.get(**fields)
            except Lawyer.DoesNotExist:
                form = SearchForm()
                return render_to_response('not_in_database.html', {'last': last_name, 'first': first_name, 'form': form})
            except Lawyer.MultipleObjectsReturned:
                form = SearchForm(initial={'last_name': last_name})
                # Note: this breaks the current multiple returns functionality, up to you...
                return render_to_response('more_than_1_match.html', {'last': last_name, 'first': first_name, 'form': form}) 
            q_school = searched_lawyer.school
            q_year = searched_lawyer.year_graduated
            classmates = Lawyer.objects.filter(school__iexact=q_school).filter(year_graduated__icontains=q_year).exclude(last__icontains=last_name)
            form = SearchForm()
            return render_to_response('search_results.html', {'classmates': classmates, 'searched_lawyer': searched_lawyer, 'form': form})
    else:
        form = SearchForm()
        return render_to_response('search_form.html', {'form': form, })

Так что теперь вместо того, чтобы использовать «first» и «last» в вашем шаблоне, вы будете использовать «seek_lawyer.first» и т. Д. (Но это означает, что у вас будет доступ ко всем атрибутам этого юриста в вашем шаблон)

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