Я использую WTForms-JSON и обрабатываю вложенные формы. Я хотел бы сделать внутреннюю форму необязательной, но если внутренняя форма присутствует, я бы хотел, чтобы ее поля были обязательными. Проблема, с которой я сталкиваюсь, заключается в том, что FormField
не принимает валидаторы.
(Хотя я использую WTForms-JSON, я полагаю, что это относится и к обычным WTForms.)
Этот код работает, но не так, как я хочу:
class InnerForm(Form):
foo_id = IntegerField("Foo ID", [Required()])
class OuterForm(Form):
inner = FormField(InnerForm)
Проблема с приведенным выше кодом заключается в том, что inner
требуется неявно. Как ни странно, хотя validate()
возвращает False
, когда inner
опущено, errors
пусто.
Этот код не работает:
class InnerForm(Form):
foo_id = IntegerField("Foo ID", [Required()])
class OuterForm(Form):
inner = FormField(InnerForm, "Inner", [Optional()])
Последний выдает эту ошибку:
TypeError: FormField does not accept any validators. Instead, define them on the enclosed form.
Мой вопрос: как сделать inner
необязательным, но требовать foo_id
, если присутствует inner
?