如何根据另一个字段的存在有条件地验证字段。例如,仅当“country”为“US”时才需要“state”。
感谢, 史蒂夫
修改
所以我想这样做:
chained_validators = [validators.RequireIfPresent('state', present="country")]
但错误消息与“_the_form”而不是“state”相关联。有没有办法将它链接到该字段?
答案 0 :(得分:0)
在我公司的项目中遇到同样的问题。我们为此编写了自己的Formencode验证器。我们目前正尝试将其与主项目合并。在此期间,您可以在此处下载:https://github.com/GevatterGaul/formencode
还有一个Howto in,well,german: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
仅在给定字段与给定值匹配时才需要字段。在您的示例中,仅当“country”为“US”时,才需要“state”字段。
希望我能提供帮助。