希望能够做到这一点:
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))