内部 class 作为 Marshmallow 中的嵌套模式?
Inner class as nested schema in Marshmallow?
是否可以在 Marshmallow (https://marshmallow.readthedocs.io/en/latest/) 中使用内部 class 作为嵌套架构?
我试图在 Marshmallow 中表示一个分层模式,它似乎是通过嵌套模式完成的。比如我有一个Method
对象,它有一个Params
属性,它本身就是一个对象。我可以将其表示为:
class MethodParamsSchema(Schema):
a = fields.String()
b = fields.Int()
class MethodSchema(Schema):
name = fields.String()
params = fields.Nested(MethodParamsSchema)
我想做的是:
class MethodSchema(Schema):
class MethodParamsSchema(Schema):
a = fields.String()
b = fields.Int()
name = fields.String()
params = fields.Nested('MethodSchema.MethodParamsSchema')
但这失败并出现错误:
Class with name 'MethodSchema.MethodParamsSchema' was not found. You
may need to import the class.
我想这样做的原因是因为我的架构相当分层,我想将相关项目组合在一起。有办法实现吗?
在定义嵌套字段时将 'MethodSchema.MethodParamsSchema'
更改为 'MethodParamsSchema'
解决了我的问题:
params = fields.Nested('MethodParamsSchema')
是否可以在 Marshmallow (https://marshmallow.readthedocs.io/en/latest/) 中使用内部 class 作为嵌套架构?
我试图在 Marshmallow 中表示一个分层模式,它似乎是通过嵌套模式完成的。比如我有一个Method
对象,它有一个Params
属性,它本身就是一个对象。我可以将其表示为:
class MethodParamsSchema(Schema):
a = fields.String()
b = fields.Int()
class MethodSchema(Schema):
name = fields.String()
params = fields.Nested(MethodParamsSchema)
我想做的是:
class MethodSchema(Schema):
class MethodParamsSchema(Schema):
a = fields.String()
b = fields.Int()
name = fields.String()
params = fields.Nested('MethodSchema.MethodParamsSchema')
但这失败并出现错误:
Class with name 'MethodSchema.MethodParamsSchema' was not found. You may need to import the class.
我想这样做的原因是因为我的架构相当分层,我想将相关项目组合在一起。有办法实现吗?
在定义嵌套字段时将 'MethodSchema.MethodParamsSchema'
更改为 'MethodParamsSchema'
解决了我的问题:
params = fields.Nested('MethodParamsSchema')