2012-04-16 1 views
1

Я пытаюсь отобразить переменное число полей/полей ввода, созданных с использованием шаблона django (v 1.3). На мой взгляд, я смотрю на таблицу, чтобы получить имена столбцов, а затем создать список forms.CharFields() одного и того же размера, и пронестись их вместе следующим образом:Оказание переменного числа пар текста/полей ввода с шаблонами django

ua_data = [forms.CharField(required=False) for i in range(len(ua_data_field_names))] 
ua_fields = zip(ua_data_field_names, ua_data) 
ua_field1 = forms.CharField(required=False) # temp field for testing 

так, что в конце об этом, контекст содержит что-то вроде этого (только для одного поля):

>>> ua_fields 
[(u'Test field', <django.forms.fields.CharField object at 0x108386b50>)] 

в моем шаблоне, я бегу следующий цикл:

{% for field in form.ua_fields %} 
    <tr> 
     <td>{{ field.0 }}</td> 
     <td>{{ field.1 }} {{ field.1.errors }}</td> 
     {#<td>{{ form.ua_field1 }} {{ form.ua_field1.errors }}</td>#} 
    </tr> 
    {% endfor %} 

это извергает следующее оказанной HTML :

Test field <django.forms.fields.CharField object at 0x1081f1c50> 

, тогда как если бы поменять места второй <td> выше, с закомментированной линией, я на самом деле получить поле ввода вынесенное (ua_field1 является прямой forms.CharField объекта)

Что мешает поле списка подстановок делать то магия HTML-рендеринг?

+0

Пожалуйста, покажите, как вы определяете 'ua_fields' и' ua_field1'. –

+0

@ DanielRoseman: Добавлено. Благодаря! – kps

ответ

1

Что представляет собой {{ form.field1 }} - это не означает, что form.fields['field1']. Это специальный BoundField, который связан с некоторыми данными и готов к рендерингу.

Таким образом, вы должны фактически заполнить форму с field1 ... fieldN по созданию формы, а затем в ua_fields() молнии вместе пар «„TEXT_NAME“, значение self.__getitem__('fieldX')»

Смежные вопросы