2011-05-03 2 views
2

다른 필드의 존재 여부에 따라 조건부로 필드의 유효성을 검사하려면 어떻게해야합니까? 예를 들어, "country"가 "US"인 경우에만 "state"가 필요합니다.formencode 조건부 유효성 검사

덕분에,

스티브는

는 편집 :

그래서 나는 이렇게 생각 :

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

하지만 오류 메시지 대신 "상태"의 "_the_form"와 연결되어 있습니다. 대신 필드에 연결하는 방법이 있습니까?

+0

코드 샘플을 얻을 수 있을까요? – MikeVaughan

+0

필자는 "NotEmpty"와 같이 기본 유효성 검사기만을 사용하고 있습니다. 따라서 예를 들어 State와 Country의 두 가지 양식 필드가 있으며 국가가 미국 인 경우 NotEmpty 만 원합니다. 그렇지 않으면 State가 비어있을 수 있습니다. – steve

답변

0

내 회사의 프로젝트 동안 동일한 문제가있었습니다. 우리는 이것을 위해 우리 자신의 Formencode 검사기를 작성했습니다. 현재이 프로젝트를 주 프로젝트와 병합하려고합니다. https://github.com/GevatterGaul/formencode

는 독일어 아니라,의 노하우,있다 : 그 동안 당신은 여기에서 다운로드 할 수 있습니다 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은 주어진 필드가 주어진 값과 일치 할 때 필드 만 필요하다는 것입니다. 귀하의 예에서 '국가'가 '미국'인 경우에만 '국가'필드가 필요합니다.

희망이 있습니다.

+0

더 나은 유효성 검사 라이브러리가 있어야합니다. 메신저하지만이 작업의 원인을 사용하여 'not_empty'와 같은 옵션을 갖는 것은 이미 내 책에서 붉은 깃발의 시작입니다. – dtc