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

Flask-RESTX中配置Nested字段允许null值的问题求助

Flask-RESTX中配置Nested字段允许null值的问题求助

我最近在用Flask-RESTX搭建项目,用它来校验JSON请求体格式,同时也用了Namespace来组织接口,所以代码里用ns替代了蓝图。我的接口代码大概是这样的:

@ns.route('/event')
class EventResource(Resource):
    @ns.expect(event_model, validate=True)
    def post(self):
        validated_data = ns.payload
        # 直接使用请求中的payload
        logger.info(f"Validated event data: {validated_data}")
        # ... 后续业务逻辑

模型定义部分,department是一个嵌套字段,我是这么写的:

event_department_model = ns.model('EventDepartment', {
    'identifier': fields.String(required=True, description='Department identifier'),
    'name': fields.String(required=True, description='Department name')
})

event_model = ns.model('Event', {
    # ... 其他字段
    'department': fields.Nested(event_department_model, required=False, allow_null=True, skip_none=True, nullable=True, description='Department information'),
    # ... 其他字段
})

我希望请求体里的department字段能接受null值,所以在定义这个嵌套字段时,我试了required=False、allow_null=True、nullable=True、skip_none=True这些参数的各种组合,但不管怎么调整,只要请求里把department设为null,就会收到这个错误:

{
  "errors": {
    "department": "None is not of type 'object'"
  },
  "message": "Input payload validation failed"
}

我上网搜了一圈,没找到和我这个情况完全匹配的问题。搜索结果说这个错误是因为校验器期望department是一个对象,但收到了null,可明明我已经设置了允许null的参数啊。看到其他人一般设置allow_null或者skip_none就能解决,但我这里不管用,实在搞不清哪里出问题了,有没有大佬能指点一下?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 09:33:05