【发布时间】:2020-11-30 13:08:52
【问题描述】:
我正在尝试使用 Flask、WTForms 和 Jinja 构建屏幕。它将显示一个递归结构,其中每个级别可以是一个表单或一组表单。出于解释的目的,假设我要显示的表单称为 ChildForm。我希望能代表这种结构...
[ChildForm, ChildForm, [ChildForm, ChildForm], ChildForm]
虽然它可能会更深入。
我的表单的简化版本如下所示(尽管我已经尝试了很多尝试来解决这个问题)...
class ChildForm(FlaskForm):
table = SelectField(label='Table Column')
comparator = StringField(label='Equals', default='=')
golden_set = SelectField(label='Golden Set Column')
btn_add_rule = SubmitField(label='Add Rule')
btn_delete_rule = SubmitField(label='Delete Rule')
class ParentForm(FlaskForm):
tbl_name = HiddenField(label='Table Name')
rules = []
btn_save = SubmitField(label='Save')
btn_cancel = SubmitField(label='Cancel')
因此,ParentForm.rules 当前是一个 Python 列表。我希望用 ChildForm 的实例和/或包含 ChildForm 的多个实例的列表来填充它。这种结构的问题在于 Jinja2 在遍历 ParentForm 中的字段时会跳过 rules。
我尝试将 rules 更改为包含 ChildForm 实例的 FieldList 类型,使用 WTForms .append_entry 方法添加新实例,但是,这似乎不允许我创建规则子列表。
关于如何制作这种有时是递归结构的任何想法?谢谢!
【问题讨论】:
标签: flask jinja2 flask-wtforms wtforms