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

如何在Cerberus中验证字段为仅含任意数量字符串元素的列表?

解决Cerberus中列表元素类型的精准验证问题

你当前写的规则'categories_id' : {'required' : False, 'type' : ['string','list']}之所以会让单个字符串通过验证,是因为你把string和list都设为了合法类型——这相当于允许字段要么是单个字符串,要么是列表,刚好和你想要的效果相反。

要实现字段要么不存在,要么是一个仅包含任意数量字符串元素的列表,你需要调整验证规则如下:

'categories_id': {
    'required': False,
    'type': 'list',  # 明确限定字段必须是列表类型,单个字符串直接验证失败
    'schema': {'type': 'string'}  # 指定列表内的每一个元素都必须是字符串
}

规则细节解释:

  • 'type': 'list':彻底排除单个字符串的合法性,强制字段只能是列表类型。
  • 'schema': {'type': 'string'}:定义列表元素的验证规则,确保列表里的每一项都是字符串,不管列表长度是多少(空列表也会通过验证)。

额外扩展需求:

如果需要禁止空列表(要求列表至少包含一个字符串元素),可以添加minlength规则:

'categories_id': {
    'required': False,
    'type': 'list',
    'schema': {'type': 'string'},
    'minlength': 1
}

调整后的规则会严格拦截单个字符串的情况,只有传入符合要求的字符串列表,或者完全不传入该字段时,验证才会通过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 03:42:42