如何在 WTForms + Flask 中获取 SelectMultipleField 中的所有选中项

How to get all checked items in SelectMultipleField in WTForms + Flask

我有一个 SelectMultipleField 但是当我尝试访问选中的项目时,以为 form.fields.data 我只得到了其中的第一个。 此外,通过尝试直接从 request.form.data

获得答案
        for key in request.form.keys():
            print(str(key) + '=' + str(request.form.getlist(key)))

我可以在那里看到所有选中项目的数组。

我哪里弄错了,所以WTForms无法将所有选中的项目都传递给form.fields.data

我的路线:

    form = ListForm()

    if request.method == "GET":
        form.add_items(bank.get_items())
    elif request.method == "POST":
        print(form.fields.data) # and in needed field i only see 'A' even if 'A', 'B' and 'C' checked

形式本身:

class Item(FlaskForm):
    pass

class ListForm(FlaskForm):
    fields = FieldList(FormField(Item))
    submit = SubmitField('Submit')

    def add_items(self, items):
        for item in items:
            Item.choices_field = SelectMultipleField(
                choices=item.get_choices()
            ) # lets just assume get_choices() returned ['A', 'B', 'C', 'D'] for an element

            self.fields.append_entry()

以及我的模板:

        {{ form.hidden_tag() }}
        <form method="post" novalidate>
                {% for field in form.fields %}
                        <fieldset>
                               {{ field.choices_field }}
                        </fieldset>
                {% endfor %}
                {{ form.submit }}
        </form>

我尝试使用元组而不是选项列表,但遇到了同样的问题

所以答案是从 request.form 而不是 form.data 获得答案。