问题描述
我正在使用嵌套字段来验证传入的 post 请求,使用 @api.expect
之类的
payload1 = api.model('Payload',{
'prop1': fields.nested({'prop1_inner' : fields.String(required=True)})
})
payload2 = api.model('Payload',{
'prop1': fields.nested(api.model("Metadata",{
'prop1_inner': fields.String(required=True)
}))
})
#doesn't work
@api.expect(payload1,validate=True)
def post(self):
#works
@api.expect(payload2,validate=True)
def post(self):
当我使用 payload1
时出现异常
'dict' 对象没有属性 'name'
我希望两种表单都能验证传入的请求。想知道没有模型包装器的嵌套字段不起作用的原因。
解决方法
考虑一下。 嵌套模型通常不在内部定义。它们本身必须是具有离散名称的离散模型,由于 swagger 文档将嵌套字段作为单独的模型,因此,在这里,
payload1_addon = api.Model('PayloadAddon',{
'prop1_inner' :fields.String(required=True)})
payload1 = api.model('Payload',{'prop1': fields.Nested(payload1_addon)})