gpt4 book ai didi

python - 使用 FieldList 在 WTForm 的选择字段中动态分配选项

转载 作者:太空宇宙 更新时间:2023-11-03 20:52:55 26 4
gpt4 key购买 nike

类似于这个问题: Dynamic choices WTForms Flask SelectField

在我的 Flask 应用程序中,我有一个带有多个选择字段的 WTForm。我想动态分配选择字段的数量和选择字段的选择。

class FormEntry(FlaskForm):
selectfield = SelectField('Name', coerce=int, choices=[('1', 'default_choice1'), ('2', 'default_choice2')])


class MyForm(FlaskForm):
form_entries = FieldList(FormField(FormEntry), min_entries=1)

创建 FormEntry 的实例并分配选项:

my_entry = FormEntry()
my_entry.selectfield.choices =[('3', 'mychoice3'), ('4', 'mychoice4')]

但是,当我使用此条目创建表单实例时,选项不是我选择的,而是默认的:

form_entries = [my_entry, my_entry]
form = MyForm(form_entries=form_entries)
for entry in form.form_entries:
print(entry.selectfield.choices)

打印输出:

[('1', 'default_choice1'), ('2', 'default_choice2')]
[('1', 'default_choice1'), ('2', 'default_choice2')]

出了什么问题以及如何正确分配选项?

最佳答案

https://wtforms.readthedocs.io/en/stable/fields.html#wtforms.fields.SelectField

来自文档(强调我的)

Note that the choices keyword is only evaluated once, so if you want to make a dynamic drop-down list, you’ll want to assign the choices list to the field after instantiation. Any inputted choices which are not in the given choices list will cause validation on the field to fail.

即没有 selectfield = SelectField('Name', coerce=int, Choices=[('1', 'default_choice1'), ('2', 'default_choice2')]请改用 selectfield = SelectField('Name', coerce=int)

关于python - 使用 FieldList 在 WTForm 的选择字段中动态分配选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56199193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com