2

我如何根据另一个字段的存在有条件地验证一个字段。例如,仅当“国家”为“美国”时才需要“州”。

谢谢,史蒂夫

编辑:

所以我想这样做:

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

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

4

1 回答 1

0

在我公司的一个项目中遇到了同样的问题。为此,我们编写了自己的 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.RequireIfPresentvalidators.RequireIfMatching仅当给定字段与给定值匹配时才需要一个字段。在您的示例中,仅当“国家”为“美国”时,才需要“州”字段。

希望我能帮上忙。

于 2014-08-18T23:32:06.943 回答