Ale*_*amo 21
您可以在创建字段时使用choices
和default
关键字参数,如下所示:
my_choices = [('1', 'Choice1'), ('2', 'Choice2'), ('3', 'Choice3')]
SelectMultipleField(choices = my_choices, default = ['1', '3'])
Run Code Online (Sandbox Code Playgroud)
这会将选项1和3标记为已选中.
编辑:data
当表单被实例化时,默认值显然被处理(复制到成员中),因此更改默认值之后将没有任何效果,除非您在该字段上手动调用process().您可以设置data
-member,如下所示:
form.myfield.data = ['1', '3']
Run Code Online (Sandbox Code Playgroud)
但我不确定他们中的任何一个是不是一个好习惯.
编辑:如果您想要实际设置数据而不是默认值,您应该使用表单来加载数据.
Form
对象formdata
作为第一个参数,并使用它来自动填充字段值.(你应该使用带有getlist -method的字典包装器)
您还可以使用关键字参数在创建表单时设置数据,如下所示:
form = MyForm(myfield = ['1', '3'])
Run Code Online (Sandbox Code Playgroud)
kru*_*pan 18
这对我有用SelectField
:
form.myfield.default = '1'
form.process()
Run Code Online (Sandbox Code Playgroud)
我猜你可以form.myfield.default
为一个分配一个列表SelectMultipleField
.但是,密钥似乎是process
在您分配默认值后调用表单上的方法.
这对我有用(带有动态多选字段):
form = MyForm(request.form, obj=my_obj)
form.tags.choices = [('1', 'abc'), ('2', 'def')]
form.tags.default = ['1', '2']
form.tags.process(request.form)
Run Code Online (Sandbox Code Playgroud)
如果我只是调用form.process()
,它会丢失表单中其他字段的默认值。