Я потребляющие API, который возвращает что-то вроде:десериализации вложенные поля в зефире
{'name': 'foo', 'start': {'date': '2016-06-19', 'time': '18:00'}}
И я хочу desearialize его с зефиром, чтобы получить только имя и дату начала, так что желаемый результат будет следующее:
{'name': 'foo', 'date': '2016-06-19'}
Но я не нашел способ получить дату, это то, что я пробовал:
from marshmallow import Schema, fields, pprint
event = {'name': 'foo', 'start': {'date': '2016-06-19', 'time': '18:00'}}
class EventSchema(Schema):
name = fields.Str()
date = fields.Str(load_from='start.date')
schema = EventSchema()
result = schema.load(event)
pprint(result.data)
Вы также можете сократить историю с помощью lambdas, http://marshmallow.readthedocs.io/en/latest/custom_fields.html#function-fields, выполнив что-то вроде этого: 'date = fields.Function (load_from = ' start ', load_only = True, deserialize = lambda start: start [' date ']) '. –