kra*_*r65 9 python forms default flask wtforms
我正在使用Python Flask框架构建一个网站,我在其中使用WTForms.在一种形式中,我有一个RadioField定义如下:
display = RadioField('display', default='ONE')
Run Code Online (Sandbox Code Playgroud)
这没有定义任何选择,因为我在后面这样做(完全正常):
myForm = MyForm()
myForm.display.choices = [('ONE', 'one'), ('TWO', 'two')] # This works fine
Run Code Online (Sandbox Code Playgroud)
我现在想在为其设置选项后设置RadioField的默认值.所以我尝试从定义中删除默认值(我不确定是否'ONE'总是一个可用的选项)并在创建选项之后创建默认值,就像我上面所做的那样:
myForm.display.default = 'ONE'
Run Code Online (Sandbox Code Playgroud)
不幸的是,这根本没有效果.如果我在Field定义中手动设置它,就像我之前一样,它可以正常工作,但如果我在创建选项后动态设置它,则不行.
有谁知道如何在WTForms中动态设置RadioField的默认值?欢迎所有提示!
jei*_*son 14
您需要myForm.process()在添加选项并设置default属性后运行:
myForm = MyForm()
myForm.display.choices = [('ONE', 'one'), ('TWO', 'two')]
myForm.display.default = 'ONE'
myForm.process() # process choices & default
Run Code Online (Sandbox Code Playgroud)
这是因为,default被传播到字段值(以及,在的情况下RadioField,则checked在属性)process方法,这就是所谓在构造.