Django ModelForm: доступ к значению поля в шаблоне представления - PullRequest
4 голосов
/ 29 октября 2009

Q: Можно ли вытащить значение для одного из полей моей ModelForm, находясь в шаблоне? Если да, то как?

Справочная информация: У меня есть форма поиска, которую я использую, чтобы позволить пользователям фильтровать результаты запроса. И таблицу результатов вместе с формой можно экспортировать в лист Excel. Когда страница отображается с новыми результатами, входные значения формы поиска все еще сохраняются. Тем не менее, они также все еще содержатся в объекте поля для каждого поля ввода формы. Таким образом, при экспорте в Excel значения формы поиска не захватываются, потому что значение не находится в отдельной ячейке таблицы. Итак, я хочу добавить столбец после столбца поля, который содержит значение поля (но не отображать этот столбец).

Я мог бы проанализировать строку HTML для поля и захватить все, что есть в атрибуте значения, но я бы сделал это только в крайнем случае. До сих пор я был в состоянии получить доступ к словарю данных моей формы и получить объект того поля, которое мне нужно, но я не выяснил, какой метод я могу использовать для фактического получения значения поля.

Ответы [ 3 ]

8 голосов
/ 02 марта 2010

Форма имеет атрибут cleaned_data, только если она действительна. Если вы хотите получить доступ к значению для одного из полей формы, вы можете просто написать в шаблоне:

{{ form.data.%field_name% }}

5 голосов
/ 15 сентября 2011

попробуйте следующее: {{ form.a.value }}

5 голосов
/ 29 октября 2009

Поскольку вы пытаетесь получить эти данные из заполненной формы, я думаю, что самым простым способом было бы передать формы .cleaned_data в шаблон и использовать их. Допустим, у вас есть форма с полями name и specialty, это будет выглядеть примерно так:

def my_view(request):
    form = my_form(request.GET)
    if form.is_valid():
        ... do search stuff ...
        search_query = form.cleaned_data
        return render_to_response('my_template.html', {'search_query': search_query, 'search_results': ...,}, ...)

Затем в своем шаблоне вы просто извлекаете нужные значения:

<tr>
  <th>Name</th>
  <th>Specialty</td>
</tr>
<tr>
  <td>{{ search_query.name }}</td>
  <td>{{ search_query.specialty }}</th>
</tr>

Или как вы форматируете для Excel.

...