以 Flask 形式 (WTForm) 嵌套 FieldList/FormField 加载数据

Load data in nested FieldList/FormField in flask forms (WTForm)

我有一个问题 initiating/populating 带有嵌套数据的表单。

表格如下:

field_1 --> FieldList(FormField)
    field_1_1 --> StringField
    field_1_2 --> StringField
    field_1_3 --> FieldList(StringField)

我想使用 my_form = my_form_class(**data).

实例化表单

这是 data 的样子:

data = {
    "field_1 ": [
        "field_1_1": "abc",
        "field_1_2": "abc",
        "field_1_3": ["abc", "abc", "abc"]
    ]
}

但是实例化后,my_form.data为空,my_form.validate()不通过

我还有其他类似的表单,只是少了一层嵌套(FormField 中没有 FieldList)并且工作正常,这可能是问题所在吗?

This person 遇到同样的问题(无解决方案)。通过搜索,我看到人们在谈论多个 CSRF 令牌?这是如何工作的?

有什么想法吗?

解决方案是使用:

my_form = my_form_class()
my_form.process(data=form_data_json)

而不是:

my_form = my_form_class(**data)

检查 this part 关于 .process() 方法的文档:

Since BaseForm does not take its data at instantiation, you must call this to provide form data to the enclosed fields.