@pcdesign

Как в wtform проверить на валидность одно поле из двух?

class MyForm(Form):
    field1 = DecimalField('Сумма1', validators=[DataRequired()])     
    field2 = DecimalField('Cумма2', validators=[DataRequired()])


Мне надо, чтобы валидатор проверил, что одно поле из двух заполнено.
Ну то есть юзер должен заполнить либо field1, либо field2.
Но совсем ни одного поля не заполнять пользователю нельзя.
Как это сделать с использованием wtform?
  • Вопрос задан
  • 201 просмотр
Пригласить эксперта
Ответы на вопрос 1
@bIbI4k0
Питоню
Решение в лоб. Переопределите метод validate() у MyForm и проверьте заполненность там. Что-то вроде:

class MyForm(Form):
    field1 = DecimalField('Сумма1')     
    field2 = DecimalField('Cумма2')

    def validate(self):
        if not Form.validate(self):
            return False
        if field1.data:
            if field2.data:
                return True
        return False


DataRequired в списке валидаторов для полей, соотв., указывать не надо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы