内部类作为Marshmallow中的嵌套模式?

时间:2018-02-20 08:02:44

标签: python marshmallow

是否可以在Marshmallow中使用内部类作为嵌套模式(https://marshmallow.readthedocs.io/en/latest/)?

我试图在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')

但是失败并出现错误:

  

找不到名为“MethodSchema.MethodParamsSchema”的类。您   可能需要导入该类。

我想这样做的原因是因为我的模式是相当分层的,我想将相关项目组合在一起。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

在定义嵌套字段时将'MethodSchema.MethodParamsSchema'更改为'MethodParamsSchema'可以解决我的问题:

params = fields.Nested('MethodParamsSchema')