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

How to dynamically set default value in WTForms RadioField?

我正在构建一个网站,其中 Python Flask framework in which I use WTForms. In one form I've got a 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 的默认值吗?欢迎所有提示!

您需要 运行 myForm.process() 添加选项并设置 default 属性:

myForm = MyForm()
myForm.display.choices = [('ONE', 'one'), ('TWO', 'two')]
myForm.display.default = 'ONE'
myForm.process() # process choices & default

这是因为 default 被传播到 [=16] 中的字段值(并且,在 [=14= 的情况下,checked 属性) =]方法,在构造函数中调用。