我正在使用Python Flask框架构建一个网站,我在其中使用WTForms。在一种形式中,我得到了RadioField定义如下:
display = RadioField('display', default='ONE')
这没有定义任何选择,因为我后来这样做(完全正常):
myForm = MyForm()
myForm.display.choices = [('ONE', 'one'), ('TWO', 'two')] # This works fine
我现在想在之后设置RadioField 的默认值。我为它设置了选项。所以我尝试从定义中删除默认值(我不确定'ONE'
是否总是可用的选项)并且在创建选项后创建默认值,如上所述:
myForm.display.default = 'ONE'
不幸的是,这根本没有效果。如果我在Field定义中手动设置它,就像我之前一样,它可以正常工作,但如果我在创建选项后动态设置它,则不行。
有谁知道如何在WTForms中动态设置RadioField的默认值?欢迎所有提示!
答案 0 :(得分:11)
添加选项并设置myForm.process()
属性后,您需要运行default
:
myForm = MyForm()
myForm.display.choices = [('ONE', 'one'), ('TWO', 'two')]
myForm.display.default = 'ONE'
myForm.process() # process choices & default
这是因为default
传播到RadioField
方法中的字段值(对于checked
,process
属性),在构造函数中调用。