Как заставить WTForms требовать ввода в поле RadioButton? - PullRequest
0 голосов
/ 20 марта 2019

Я создаю веб-форму, используя Flask и Flask-WTF.Форма является динамической, с полями, определенными базой данных.Некоторые вопросы в базе данных указывают поле переключателя, в то время как другие задают одно слово.

Мне нужно, чтобы поля переключателя имели выбор.Использование wtforms.validators.DataRequired отлично работает для строковых полей, но не для радиополей.

...
    if question.category == 'word':
        field = StringField(question.question, validators=[DataRequired()])
    elif question.category == 'likert':
        choices = [('1', 'Strongly Agree'), ('2', ...
        field = RadioField(question.question, choices=choices,
                           validators=[DataRequired()])
    setattr(FlaskForm, str(question.id), field)
stator(FlaskForm, 'submit', SubmitField('Submit))
form = FlaskForm()
....

Оставление пустым любого строкового поля приводит к появлению сообщения об ошибке при отправке.Но ничего не происходит, если радиополе оставить без выделения.

Как я могу это исправить?

1 Ответ

0 голосов
/ 21 марта 2019

Я до сих пор не знаю, почему DataRequiredInputRequired) не работают должным образом с радиополями, но вот как я решил это.

Я подклассифицировал FlaskForm следующим образом:

class SurveyForm(FlaskForm):
    class Meta:
        def render_field(self, field, render_kw):
            render_kw.setdefault('required', True)
            return super().render_field(field, render_kw)

Используя добавление динамических полей к экземпляру этого подкласса, тогда даже для радиополей требуется ввод.

...