У меня есть два поля, в которых пользователь может выбрать одно для ввода, но они не могут ввести оба и не могут пропустить оба.Requiered()
делает так, что они не могут пропустить один, а Optional()
позволяют им пропустить оба.
Я могу найти только пример, когда вы хотите, чтобы другое было обязательным, когда вы заполняете одно поле, но я не знаю, как изменить его в моем случае, потому что пример наследует валидатор Required()
, который делаетдва поля, обязательные для заполнения.
Ниже приведен пример, который я нашел здесь .Кто-нибудь знает, есть ли собственный способ сделать то, что я описал сейчас, или знает, как изменить это, чтобы удовлетворить мой случай?
class RequiredIf(Required):
# a validator which makes a field required if
# another field is set and has a truthy value
def __init__(self, other_field_name, *args, **kwargs):
self.other_field_name = other_field_name
super(RequiredIf, self).__init__(*args, **kwargs)
def __call__(self, form, field):
other_field = form._fields.get(self.other_field_name)
if other_field is None:
raise Exception('no field named "%s" in form' % self.other_field_name)
if bool(other_field.data):
super(RequiredIf, self).__call__(form, field)