formencode条件验证

时间:2011-05-03 22:35:58

标签: python validation formencode

如何根据另一个字段的存在有条件地验证字段。例如,仅当“country”为“US”时才需要“state”。

感谢, 史蒂夫

修改

所以我想这样做:

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

但错误消息与“_the_form”而不是“state”相关联。有没有办法将它链接到该字段?

1 个答案:

答案 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”字段。

希望我能提供帮助。