如何在WTForms RadioField中动态设置默认值?

时间:2015-07-15 06:58:56

标签: python forms flask default wtforms

我正在使用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的默认值?欢迎所有提示!

1 个答案:

答案 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方法中的字段值(对于checkedprocess属性),在构造函数中调用。