Перевод полей формы 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 %}
Вернуться на верх