formencode 条件验证
我想知道怎么根据另一个字段的值来验证一个字段的条件。比如说,只有当“国家”是“美国”时,“州”这个字段才是必填的。
谢谢,
史蒂夫
编辑:
我想到了这样做:
chained_validators = [validators.RequireIfPresent('state', present="country")]
但是错误信息是和“_the_form”关联的,而不是“州”这个字段。有没有办法把它关联到“州”字段上呢?
1 个回答
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
只在某个字段的值符合特定条件时才要求填写另一个字段。在你的例子中,只有当'country'的值是'US'时,才会要求填写'state'字段。
希望这对你有帮助。