我如何根据另一个字段的存在有条件地验证一个字段。例如,仅当“国家”为“美国”时才需要“州”。
谢谢,史蒂夫
编辑:
所以我想这样做:
chained_validators = [validators.RequireIfPresent('state', present="country")]
但错误消息与“_the_form”而不是“state”相关联。有没有办法将它链接到该字段?
我如何根据另一个字段的存在有条件地验证一个字段。例如,仅当“国家”为“美国”时才需要“州”。
谢谢,史蒂夫
编辑:
所以我想这样做:
chained_validators = [validators.RequireIfPresent('state', present="country")]
但错误消息与“_the_form”而不是“state”相关联。有没有办法将它链接到该字段?
在我公司的一个项目中遇到了同样的问题。为此,我们编写了自己的 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
仅当给定字段与给定值匹配时才需要一个字段。在您的示例中,仅当“国家”为“美国”时,才需要“州”字段。
希望我能帮上忙。