Как динамически установить значение по умолчанию в WTForms RadioField?

Я создаю веб-сайт с помощью структуры 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'

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

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

Вы можете передать значения по умолчанию в конструктор формы, чтобы вы могли сначала получить варианты, а затем передать выбор по умолчанию конструктору MyForm: MyForm (display = ‘ONE’)   —  person kramer65    schedule 15.07.2015

См. также:  Разделитель строк / разрыв в Discord.js встраивать сообщение
Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. kramer65

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

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: