如何让WTForms要求进入RadioButton字段?

问题描述 投票:0回答:1

我正在使用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()
....

将任何字符串字段留空会导致提交时出现错误消息。但是如果没有选择的无线电场就没有任何反应。

我怎么能纠正这个?

python flask-wtforms
1个回答
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)

使用动态字段添加到此子类的实例,甚至使无线电字段需要输入。

© www.soinside.com 2019 - 2024. All rights reserved.