Я не совсем уверен, как подходит этот вопрос. Надеюсь, я доберусь туда.Добавление полей ввода динамически с помощью wtforms
Например, у меня есть таблица с адресами на странице. Количество их динамическое (может быть 5 или 10 или любое другое количество). И я хочу, чтобы их можно было редактировать на одной странице.
Мой подход заключается в создании формы с wtforms редактировать один адрес и умножить его в Jinja2 for loop
и добавить к HTML propertys name
и id
loop.index0
из itereation, так что я могу извлечь каждую строку данных вручную и верните его в мою форму, когда я хочу его оценить.
Так форма для этого примера будет:
class AdressForm(Form):
name = TextField()
так что теперь мой шаблон выглядит Подход следующий (ломаются на один поле ввода):
{% for address in addresses %}
{{ forms.render_field(addressform.name, id = "name_" ~ loop.index0,
name = "name_" ~ loop.index0, value = address.name) }}
{% endfor %}
(forms.render_field является просто макрос, чтобы указать правильные классы для функции поля wtforms, как они используются во многих учебниках)
Так что это не работает, поскольку вы не можете пройти name
вручную для функции поля, так как wtforms создают name
html-параметр из variblame основной формы.
Так есть способ добавить префикс или постфикс к имени формы, которую я хочу отобразить. Или это XY-проблема, и мой подход является тотально неправильным.
или я делать все ясно, это сам (я действительно стараюсь, чтобы избежать этого)
Thx, он работает. Только не с элементом формы с именем 'name'. С некоторыми попытками и ошибкой 'address_entry_form.name' всегда будет иметь префикс имени поля/id – muthan
oh и с' type' той же проблемой – muthan
Есть ли способ адаптировать это, чтобы я мог добавлять поля через шаблоны? Я бы хотел, чтобы пользователь нажал кнопку + и добавил другое поле в FieldList. –