2015-07-15 5 views
3

Я строю сайт с картой Python Flask, в которой я использую WTForms. В одной форме у меня RadioField определяется следующим образом:Как динамически установить значение по умолчанию в WTForms RadioField?

display = RadioField('display', default='ONE') 

Это не имеет какой-либо выбор определен, потому что я делаю это Lateron (который работает прекрасно):

myForm = MyForm() 
myForm.display.choices = [('ONE', 'one'), ('TWO', 'two')] # This works fine 

теперь я хочу установить значение по умолчанию для RadioField после Я установил для него выбор. Так что я попытался удалить значение по умолчанию из определения (я не уверен, что если 'ONE' всегда доступный выбор) и создать значение по умолчанию после того, как я создаю выбор, как я выше:

myForm.display.default = 'ONE' 

К сожалению, это имеет никакого эффекта вообще. Если я установил его вручную в определении поля, как я делаю, прежде чем он будет работать нормально, но не, если я настрою его динамически после того, как я создал выбор.

Кто-нибудь знает, как я могу динамически установить значение по умолчанию для RadioField в WTForms? Все советы приветствуются!

+0

Вы можете передать значения по умолчанию в конструкторе форм, чтобы вы могли вначале получить выбор, а затем передать выбор по умолчанию для конструктора MyForm: MyForm (display = 'ONE) –

ответ

5

Вам необходимо запустить 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, который вызывается в конструкторе.

+0

my hero! Спасибо! – ifelsemonkey