Перевод полей формы Django в HTML
Я создаю поля в цикле for и сохраняю их в списке в форме Django. При попытке поместить поля в HTML-файл, кажется, что печатается объект.
Что-то вроде этого: <django.forms.fields.IntegerField object at ...>
Мой HTML выглядит следующим образом:
{% for i in form.list %}
{{i}}
{% endfor %}
Вот как я создаю список:
l1 = [] #List that contains names
l2 = [] #List that contains other names
result = {}
for i in l1:
for j in l2:
v_name = i + '_' + j
result[v_name] = forms.IntegerField()
Как я могу преобразовать эту строку в фактический вход?
Вам нужно выполнить итерацию по нужному полю объекта :
<form method="post" novalidate>
{% csrf_token %}
{{ form.non_field_errors }}
{% for hidden_field in form.hidden_fields %}
{{ hidden_field.errors }}
{{ hidden_field }}
{% endfor %}
<table border="1">
{% for field in form.visible_fields %}
<tr>
<th>{{ field.label_tag }}</th>
<td>
{{ field.errors }}
{{ field }}
{{ field.help_text }}
</td>
</tr>
{% endfor %}
</table>
<button type="submit">Submit</button>
</form>
Вы можете добавить поля в словарь self.fields
в Form.__init__
для динамического добавления полей в форму.
class MyForm(forms.Form):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for i in l1:
for j in l2:
v_name = i + '_' + j
self.fields[v_name] = forms.IntegerField()
Это можно использовать как обычную форму или итерировать
{{ form }}
{% for field in form %}
{{ field }}
{% endfor %}