Я пытаюсь сериализовать объект с помощью Marshmallow таким образом, чтобы «связанные» свойства были сгруппированы в один словарь, который не существует в исходном объекте.Мой код:
from marshmallow import Schema, fields, pprint
import json
class StatsSchema(Schema):
population = fields.Int()
rating = fields.Int()
class AnimalSchema(Schema):
name = fields.Str()
features = fields.List(fields.Str())
stats = fields.Nested(StatsSchema)
dog = {
'name':'dog',
'features': ['tongue', 'wet nose'],
'population': 200,
'rating': 10
}
animal_schema = AnimalSchema()
data, errors = animal_schema.dump(dog)
print(json.dumps(data, indent=2))
Фактический результат:
{
"features": [
"tongue",
"wet nose"
],
"name": "dog"
}
Желаемый результат:
{
"features": [
"tongue",
"wet nose"
],
"name": "dog",
"stats": {"population": 500, "rating": 10}
}
Я понимаю, что ключ "статистика" отсутствует в выводе, потому чтоэто не на исходном объекте, но я не уверен, как указать, что Зефир должен создать новый ключ "stats" как новый словарь, используя объект.