marshmallow - 序列化时如何将架构属性映射到另一个键?

G.B*_*sch 3 python marshmallow

我需要创建一个与给定规范一致的棉花糖架构,其中我无法更改键名。一个键是 Python 中的保留关键字“from”。

class TemporalExtentSchema(Schema):
    from = fields.String(required=True)
    to = fields.String(required=True)
Run Code Online (Sandbox Code Playgroud)

这在 Python 中当然是不允许的,所以我需要这样写:

class TemporalExtentSchema(Schema):
    t_from = fields.String(required=True)
    to = fields.String(required=True)
Run Code Online (Sandbox Code Playgroud)

我想要的是:

{
    "from": "2018-01-01",
    "to": "2018-01-10"
}
Run Code Online (Sandbox Code Playgroud)

序列化时是否可以将实例属性映射到另一个键(t_from -> from)?

Jér*_*ôme 5

使用dump_to/ load_from(棉花糖 2)或data_key(棉花糖 3):

class TemporalExtentSchema(Schema):
    # Marshmallow 2
    t_from = fields.String(required=True, dump_to='from', load_from='from')
    # Marshmallow 3
    t_from = fields.String(required=True, data_key='from')
    to = fields.String(required=True)
Run Code Online (Sandbox Code Playgroud)