Условное подтверждение formencode

Как проверить поле условно на основании наличия другого поля. например, только сделать "штат" обязательным, только если "страна" - "США".

спасибо Стив

РЕДАКТИРОВАТЬ:

так что я решил сделать это:

chained_validators = [validators.RequireIfPresent('state', present="country")]

но сообщение об ошибке связано с "_the_form" вместо "state". есть ли способ связать его с полем вместо этого?

1 ответ

Была такая же проблема во время проекта в моей компании. Мы написали наш собственный валидатор Formencode для этого. В настоящее время мы пытаемся объединить его с основным проектом. Тем временем вы можете скачать его здесь: https://github.com/GevatterGaul/formencode

Также есть Howto на немецком языке: http://techblog.auf-nach-mallorca.info/2014/08/19/dynamische_formulare_validieren_mit_formencode/

Но позвольте мне дать вам краткое изложение в контексте вашего примера:

from formencode import validators
v = validators.RequireIfMatching('country', expected_value='US', required_fields=['state'])
v.to_python(dict(country='US', state='Virginia'))

Основным преимуществом является то, что по сравнению с validators.RequireIfPresent, validators.RequireIfMatching требуется только поле, когда данное поле соответствует заданному значению. В вашем примере, только если "страна" - это "США", тогда требуется поле "штат".

Надеюсь, я смогу помочь.

Другие вопросы по тегам