Flask / WTForms: правильный путь к динамическому RadioField - PullRequest
0 голосов
/ 06 сентября 2018

У меня проблема с созданием динамического RadioField с WTForms ...

Когда я пытаюсь базовый пример:

targeting_type = RadioField('Label', choices=[('value', 'description'),
                                              ('value_two', 'whatever')])

все отлично работает.

Когда я пытаюсь использовать этот пример: Flask-SQLAlchemy wtform на основе db

в форме являются значениями из БД. Но когда я нажимаю кнопку «Отправить», страница «перезагружается», но, вероятно, «без данных».

Пример моего views.py:

form = TargetingTypeForm()
form.targeting_type.choices = [
    (targeting_type.id, targeting_type.name)
    for targeting_type in SettingsTargetingType.query.all()]

if form.validate_on_submit():
    print('test', form.targeting_type.data)

После отправки этой формы тестовые данные не распечатываются: /

Пожалуйста, как правильно создать RadioField с запросом WTForms + SQLAlchemy?

Спасибо за любые ответы.

1 Ответ

0 голосов
/ 06 сентября 2018

Поскольку вы используете ID в качестве значения, и я предполагаю, что это целое число, вы должны использовать атрибут coerse на вашем RadioField!

Попробуйте это:

form = TargetingTypeForm()
form.targeting_type.choices = [
    (targeting_type.id, targeting_type.name)
    for targeting_type in SettingsTargetingType.query.all()]
form.targeting_type.coerse = int
if form.validate_on_submit():
    print('test', form.targeting_type.data)

или добавьте coerse=int к определению targeting_type в TargetingTypeForm class

...