gpt4 book ai didi

python-3.x - Flask-restplus:如何使用 'allOf' 操作定义嵌套模型?

转载 作者:行者123 更新时间:2023-12-03 16:10:34 33 4
gpt4 key购买 nike

创建一个 python flask rest plus 服务器应用程序,
我正在尝试使用“”为输入主体(在 POST 操作中)创建模型所有 ' 运算符(operator),
这相当于以下示例,取自我使用 swagger 编辑器创建的 swagger.yaml:

definitions:
XXXOperation:
description: something...
properties:
oper_type:
type: string
enum:
- oper_a
- oper_b
- oper_c
operation:
allOf:
- $ref: '#/definitions/OperA'
- $ref: '#/definitions/OperB'
- $ref: '#/definitions/OperC'

它应该是这样的(只是在我疯狂的想象中):
xxx_oper_model = api.model('XXXOperation', {
'oper_type': fields.String(required=True, enum['oper_a', 'oper_b', 'oper_c']),
'operation': fields.Nested([OperA, OperB, OperC], type='anyof')
})

当 OperA、OperB、OperC 也被定义为模型时。
我怎样才能做到这一点?

实际上,我更喜欢使用' oneOf ',但据我所知,即使在 swagger 编辑器中也不支持它,所以我尝试使用 ' 所有 ' 没有必填字段。

版本: flask restplus:0.10.1, flask :0.12.2, python :3.6.2

非常感谢

最佳答案

您需要使用 api.inherit .如 documentation 第 30 页所述例子;

parent = api.model('Parent', {
'name': fields.String,
'class': fields.String(discriminator=True)
})

child = api.inherit('Child', parent, {
'extra': fields.String
})

这样,Child 将拥有 Parent 的所有属性 + 它自己的附加属性 extra
{
"Child": {
"allOf": [
{
"$ref": "#/definitions/Parent"
},
{
"properties": {
"extra": {
"type": "string"
}
}
}
]
}
}

关于python-3.x - Flask-restplus:如何使用 'allOf' 操作定义嵌套模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46467215/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com