Flask WTform 对多个字段的验证

Flask WTform validation on multiple fields

根据两个或多个条目验证 WTform 的最佳方法是什么? IE。在下面的表格中,我想验证数据库中不存在具有所提供名称和地址的公司。

class CompanyForm(FlaskForm):
    name=StringField('Company Name', validators=[DataRequired()])
    address=StringField('Street Address', validators=[DataRequired()])

像这样...

    def validate_name(self, name, address):
        company = Company.query.filter_by(name=name.data, address=address.data).first()
        if company is None:
            raise ValidationError('This company already exists in our database.')

我通读了 S.O 上的文档和类似问题。但我还是不太明白。

尝试这样的事情..(片段的修改版本 here

class CompanyForm(FlaskForm):
    name = StringField('Company', [validators.DataRequired()])
    address = StringField('Street Address', [validators.DataRequired()])

    def validate(self):
        rv = FlaskForm.validate(self)
        if not rv:
            return False

        company = Company.query.filter_by(name=self.name.data, address=self.address.data).first()
        if company is not None:
            self.name.errors.append('Company already exists at that address')
            return False

        return True