Проверка WTform колбы на нескольких полях - PullRequest
0 голосов
/ 02 сентября 2018

Каков наилучший способ проверки WTform на основе двух или более записей? То есть в приведенной ниже форме я хочу подтвердить, что компания с указанным именем и адресом еще не существует в базе данных.

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.')

Прочитал документацию и похожие вопросы по С.О. но я все еще не могу понять это.

1 Ответ

0 голосов
/ 02 сентября 2018

Попробуйте что-то вроде этого .. (исправленная версия фрагмента здесь )

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
...