首页 > 解决方案 > 基于输入参数的Flask WTForms FieldList不起作用

问题描述

我正在尝试实例化一个包含 FieldList 的 Flask Form,我想根据附加的输入参数更改 FormField。在这篇文章之后,我的设置如下所示:

class Child1(FlaskForm):
    class Meta:
        csrf = False
    
    field = SelectField()

class Child2(FlaskForm):
    class Meta:
        csrf = False
    
    field = StringField()

class Parent(FlaskForm):
    field_list_form = FieldList(FormField(Child1))
    def __init__(self, select_child="child1", *args, **kwargs):
        super().__init__(*args, **kwargs)
        if select_child == "child2":
            self.field_list_form = FieldList(FormField(Child2))

现在在我的 Flask 应用程序中,当我使用默认参数时,这样做可以正常工作

form = Parent()
for idx in range(42):
    form.field_list_form.append_entry({})

但是做的时候

form = Parent(select_child="child2")
for idx in range(42):
    form.field_list_form.append_entry({})

我明白了 AttributeError: 'UnboundField' object has no attribute 'append_entry'

我应该如何以不同的方式做到这一点?

标签: pythonflaskflask-wtformswtforms

解决方案


推荐阅读