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

如何用Marshmallow验证指定字段存在并忽略未知字段?

解决方案

直接在Schema类的Meta配置中添加unknown='EXCLUDE'参数,结合你已定义的product_type字段配置即可实现需求:

from marshmallow import Schema, fields

class MySchema(Schema):
    # 确保字段必须存在,允许值为None
    product_type = fields.Str(required=True, allow_none=True)
    
    # 忽略所有未在Schema中定义的字段
    class Meta:
        unknown = 'EXCLUDE'

关键配置说明

  • unknown='EXCLUDE':让Marshmallow验证时直接忽略所有未声明的字段,不会因为输入字典包含额外字段而触发验证错误。
  • required=True:强制要求输入字典中必须存在product_type字段,缺失时直接验证失败。
  • allow_none=True:允许product_type的取值为None,不会因为字段值是None而报错。

验证示例

  • 验证通过的输入:
    valid_input1 = {"product_type": None, "extra_field": "任意内容"}
    valid_input2 = {"product_type": "book", "another_field": 123}
    
  • 验证失败的输入(缺失product_type):
    invalid_input = {"extra_field": "缺少product_type"}
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 18:42:08