我可以使用python棉花糖创建一个仅在反序列化时可用的派生字段吗



我有以下棉花糖模式:

class TimeSeriesSchema(Schema):
timestamp = fields.DateTime(required=True)
# year = fields.Method("get_year_from_timestamp")
# year = fields.Function(lambda obj: obj.timestamp.year)
latitude = fields.Number(allow_none=True)
longitude = fields.Number(allow_none=True)

# def get_year_from_timestamp(self, value):
#     return obj.timestamp.year

有没有办法让year成为只有在反序列化timeseries时才可访问的字段?这两种注释掉的方法不起作用,因为它们只在序列化时公开year

为了在代码中进行说明,我希望能够做到以下几点:

timeseries_data = {
'timestamp': '2020-12-30T10:00:00',
'latitude': None, 
'longitude': None
}
schema = TimeSeriesSchema()
timeseries = schema.load(timeseries_data)
timeseries['year'] = 2020

您可以使用后加载方法来实现您想要的

class TimeSeriesSchema(Schema):
timestamp = fields.DateTime(required=True)
latitude = fields.Number(allow_none=True)
longitude = fields.Number(allow_none=True)
@post_load
def add_year(self, data, **kwargs):
data["year"] = data["timestamp"].year
return data

如果有人试图指定";年;在转储或加载中,但允许添加派生字段。您也可以使用它来序列化到具有year属性的自定义Timeseries类。

最新更新