【问题标题】:formencode conditional validationformcode 条件验证
【发布时间】:2011-05-03 22:35:58
【问题描述】:

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

谢谢, 史蒂夫

编辑:

所以我想这样做:

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

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

【问题讨论】:

  • 我们可以获取代码示例,以便我们了解更多上下文吗?
  • 我只使用默认验证器,在我的例子中是“NotEmpty”。所以在我的例子中,我有两个表单字段,State 和 Country,当 Country 为 US 时,我只希望 State 为 NotEmpty。否则,State 可能为空。

标签: python validation formencode


【解决方案1】:

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

希望我能帮上忙。

【讨论】:

  • 肯定有更好的验证库。我正在使用这个工作原因,但有一个像not_empty 这样的选项已经是我书中危险信号的开始。
猜你喜欢
  • 2011-02-25
  • 2012-12-30
  • 2012-10-12
  • 2011-01-06
  • 2011-10-27
  • 2015-05-14
  • 2021-09-02
  • 2014-04-24
  • 1970-01-01
相关资源
最近更新 更多