如何使用Jinja2迭代WTForms FieldList

bob*_*wal 9 jinja2 wtforms

正如标题所说,这就是我所拥有的:

form = F(obj = myobject)
myfieldlist= FieldList(FormField(form))

{% for subfield in form.myfieldlist %}
    {{ subfield.field }}
    {{ subfield.label }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

没有输出任何想法?此外,还不完全确定是否需要FormField.谢谢

Sea*_*ira 16

FormField接受一个而不是一个实例:

class GuestForm(Form):
    email = TextField()
    vip = BooleanField()

class VenueForm(Form):
    name = TextField()
    guests = FieldList(FormField(GuestForm))
Run Code Online (Sandbox Code Playgroud)

然后在你的控制器中:

form = VenueForm(obj=myobject)
render("template-name.html", form=form)
Run Code Online (Sandbox Code Playgroud)

在模板中,您需要迭代FieldList字段,就像它是自己的形式一样:

{% for guest_form in form.guests %}
    <ul>
    {% for subfield in guest_form %}
    <li>{{ subfield.label }} {{ subfield }}</li>
    {% endfor %}
    </ul>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

  • @downvoter - 你能解释为什么你贬低了我所以我可以改进答案吗? (4认同)