Marshmallow中嵌套模式的联合



希望能够做到这一点:

class Foo(Schema):
attr1 = fds.Str(required=True)
attr2 = fds.Int(required=True)
class Bar(Schema):
attr3 = fds.Bool(required=True)
attr4 = fds.Float(required=True)
class Test(Schema):
attr5 = Union[Nested(Foo), Nested(Bar)]

基本上我需要加载一个字典到Test,它有一个属性(attr5),可以容纳两个不同的嵌套模式。我找到了Union的实现,但它们只适用于类型,而不适用于模式。我想知道这是否可能。谢谢。

您要求的是所谓的多态性(您在attr5中期望的可以是Foo或Bar类型)。

在棉花糖中没有这样的功能。您可以使用marshmallow-oneofschema。

class MyUberSchema(OneOfSchema):
type_schemas = {"foo": Foo, "bar": Bar}

class Test(Schema):
attr5 = List(Nested(MyUberSchema))

相关内容

  • 没有找到相关文章

最新更新