沼泽地中的筑巢通用田

2024-09-24 20:25:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从here尝试棉花糖ORM库。我有一个通用的报告模式,包括:

    class ReportingQueryResultSchema(ma.Schema):
         start_date = fields.Str(required=True)
         end_date = fields.Str(required=True)
         data = fields.Nested(
             ReportingDataSchema,
             required=True,
             many=True
        )

ReportingDataSchema是一个泛型字段。它可以是不同类型的模式。我的第一直觉是继承。所以我试着这样做:

^{pr2}$

marshmallow无法序列化嵌套字段,如下所示:

    {
         "data": [
              {}
         ],
        "end_date": "2017-06-05",
        "start_date": "2017-06-01"
    }

但如果我声明ReportingQueryResultSchema为:

    class ReportingQueryResultSchema(ma.Schema):
        start_date = fields.Str(required=True)
        end_date = fields.Str(required=True)
        data = fields.Nested(
             FooSchema,   # replaced here
             required=True,
             many=True
        )

然后它可以检测嵌套模式并正确填充结果。在

    {
         "data": [
              {"key": "val"}
         ],
        "end_date": "2017-06-05",
        "start_date": "2017-06-01"
    }

marshmallow中执行泛型嵌套架构的正确方法是什么?在


Tags: truefieldsdatadatehereschema模式required