You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何强制Cerberus不跳过空值,对其执行全规则校验

解决Cerberus中空值参与全规则校验的问题

要让空值(比如空字符串)参与所有校验规则(包括自定义规则),核心是关闭Cerberus默认的空值跳过逻辑,具体操作如下:

  • 在字段的Schema配置中添加"empty": false,这会强制Cerberus不对空值跳过校验,转而执行后续的所有规则(type、minlength、自定义规则等)。
  • 无需依赖nullable规则,它的作用是允许值为None,和空字符串这类空值的校验逻辑无关。

修改你提供的Schema示例,调整后如下:

"columns":{
    "foobar":{
      "type":"string",
      "minlength":6,
      "maxlength":6,
      "empty": false,
      "my_custom_rule": {
        "value_to_check_against": "foo-bar"
      },
      "meta": {
        "foo_bar":"FOOBAR"
      }
    }
}

自定义规则的适配补充

如果你的my_custom_rule之前未处理空值场景,需要确保它能接收空值并生成对应错误信息。比如在自定义规则的实现中,直接将空值与配置的value_to_check_against对比,当不相等时抛出"x值与y值不相等"的错误即可——现在因为empty: false,空值会正常进入自定义规则的校验流程。

内容的提问来源于stack exchange,提问作者Lev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 01:36:58