Я позаимствовал валидатор, который требует от пользователя ввода данных, если значение другого поля является определенным значением:
class RequiredIf(object):
def __init__(self, *args, **kwargs):
self.conditions = kwargs
def __call__(self, form, field):
for name, data in self.conditions.items():
if name not in form._fields:
Optional(form, field)
else:
condition_field = form._fields.get(name)
if condition_field.data == data and not field.data:
DataRequired()(form, field)
Optional()(form, field)
Это действительно хорошо работает, когда поле, содержащее аргумент validator
, является TextField
, но, похоже, он не работает, когда поле равно RadioField
.Как я могу адаптировать валидатор так, чтобы он также работал на RadioFields?
Как есть, независимо от того, применяется условие проверки или нет, not a valid choice
всегда возвращается для RadioField.
Заранее спасибо.
Например:
class new_form(Form):
code=BooleanField('Do you code?')
code2=RadioField('If so, what languages do you use?',
choices=[('python','python'),('C++','C++')],
validators=[RequiredIf(code=1)])
Независимо от того, установлен флажок BooleanField code
или нет, this is not a valid choice
всегда возвращается для code2
.Мне нужен валидатор, который требует ввода для любого типа поля (включая RadioField), в зависимости от значения другого поля (code=1
в данном случае).