WTForms如何验证两个字段必填一个的情况?

class Form(FlaskForm):
    phone= StringField('手机号')
    wechat = StringField('微信号')

DataRequired() 可以验证任意一个字段不为空
Optional() 允许字段不为空

这样就变成了要么两个都必填,要么指定一个必填,要么两个都可以不填
我想要实现只要有一个填了就行的情况

现在实现的方法是在视图中进行验证的:

    if form.validate_on_submit():
        if  form.phone.data or form.wechat.data:
            pass
        else:
            flash('手机号码或微信号码必须填一个呢.')
            return

在视图里自定义验证不挺好的嘛……如果想放到表单类里,可以重写 validate 方法,在执行默认的验证之后写你的验证逻辑,然后添加错误消息,具体可以参考这个 SO 回答

1 个赞

懂了,谢谢

1 个赞