WTForms:如何在SelectMultipleField中选择选项?

2024-09-21 03:14:58 发布

您现在位置:Python中文网/ 问答频道 /正文

可以使用form.myfield.choices=[("1","Choice1"), ("2","Choice2")]设置选项

如何设置所选选项?


Tags: form选项choiceschoice2myfieldchoice1
3条回答

这就是我的工作方式(使用动态多选字段):

form  = MyForm(request.form, obj=my_obj)
form.tags.choices = [('1', 'abc'), ('2', 'def')]
form.tags.default = ['1', '2']
form.tags.process(request.form)

如果我只调用form.process(),它将丢失表单中其他字段的默认值。

创建字段时,可以使用choicesdefault关键字参数,如下所示:

my_choices = [('1', 'Choice1'), ('2', 'Choice2'), ('3', 'Choice3')]

SelectMultipleField(choices = my_choices, default = ['1', '3'])

这会将选项1和3标记为选中。


编辑:默认值显然是在窗体被安装时处理(复制到data成员中)的,因此在以后更改默认值不会有任何效果,除非您在字段上手动调用process()。您可以设置data成员,如下所示:

form.myfield.data = ['1', '3']

但我不确定这两种方法是否都是好的做法。


编辑:如果要实际设置数据而不是默认值,则可能应该使用表单加载数据。

Form对象将formdata作为第一个参数,并使用它自动填充字段值。(您应该使用带有getlist方法的字典包装器)

也可以在创建表单时使用关键字参数设置数据,如下所示:

form = MyForm(myfield = ['1', '3'])

这就是我在一个SelectField上的工作原理:

form.myfield.default = '1'
form.process()

我猜你可以给form.myfield.default分配一个列表。不过,键似乎是在指定给default之后调用表单上的process方法。

相关问题 更多 >

    热门问题