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
相关产品推荐
相关产品推荐

