Условное подтверждение 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
требуется только поле, когда данное поле соответствует заданному значению. В вашем примере, только если "страна" - это "США", тогда требуется поле "штат".
Надеюсь, я смогу помочь.