如何使WTForms要求输入RadioButton字段?

时间:2019-03-20 15:46:48

标签: python flask-wtforms

我正在使用Flask和Flask-WTF创建一个Web表单。表单是动态的,其字段由数据库确定。数据库中的某些问题指定了单选按钮字段,而另一些问题指定了一个单词。

我需要选择单选按钮字段。使用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 :(得分:0)

我仍然不知道为什么DataRequired(和InputRequired)不能正确使用无线电字段,但是这是我解决的方法。

我将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)

通过将动态字段添加到该子类的实例中,然后使无线电字段也需要输入。