Flask + WTForms - 在表单列表中显示字段

3

我想要创建一个包含动态字段的表格(点击加号可以添加额外的字段)。

forms.py:

class ActionForm(Form):
    key = SelectField("Type: ", coerce=int, choices=[(0, "Option 1"), (1, "Option 2"), (2, "Opeion 3")], default=0)
    value = StringField('Value: ')


class EditForm(Form):
    content = StringField("Content: ")
    actions = FieldList(FormField(ActionForm))
    status = RadioField("Status: ", coerce=int, choices=[(0, "Inactive"), (1, "Active")], default=1)
    submit = SubmitField("Submit")

查看模板(不会呈现ActionForm中的字段):

<form method="POST">
{{ form.csrf_token }}
{{ form.actions.label }}
<div class="form-group input-group">
    {% for action in form.actions %}
        {% for field in action %}
            {{ field() }}
        {% endfor %}
    {% endfor %}
</div>
{{ form.status.label }}{{ form.status }}
{{ form.submit() }}
</form>

问题:

在我的表单中,ActionForm字段应该出现的地方只是一个空白的位置。

换句话说,我无法迭代form.actions(以显示SelectField()和StringField())。

我做错了什么?


你在哪里有render()命令? - Andrew Kloos
@AndrewKloos:这是在我的视图函数中出现的问题。我能够让表单显示出来(例如,状态会出现),但是被列入FieldList的字段却没有显示出来。我基本上只是试图支持这个Bootstrap多字段元素:http://bootsnipp.com/snippets/featured/multiple-fields。 - okoboko
1个回答

2

FieldList 接受一个 min_entries 关键字参数 - 如果你设置了它,它将确保至少有 n 个条目:

class EditForm(Form):
    content = StringField("Content: ")
    actions = FieldList(FormField(ActionForm), min_entries=1)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接