¿Cómo hacer la extracción de esquemas anidados utilizando Marshmallow?
Estoy tratando de extraer valores de una API y pasarlos a Marshmallow para extraer el esquema anidado y simplificarlo a un esquema plano. A continuación se muestra lo que intenté, pero no está funcionando.
from marshmallow import Schema, fields
class ArtistSchema(Schema):
ids = fields.Int()
name = fields.Str()
class AlbumSchema(Schema):
artist = fields.Pluck(ArtistSchema, field_name=('ids','name',)) # concept
in_data = {'artist': [{'id': 42, 'name': 'Douglas Adams'}]}
dumped = AlbumSchema().dump(in_data, many=True)
La salida esperada es:
{
'id': 42,
'name': 'Douglas Adams'
}
davy.ai
El problema con el código anterior está en el argumento field_name de la función Pluck. La sintaxis correcta para acceder a campos anidados es utilizar la notación de punto en lugar de una tupla. A continuación, se muestra el código corregido:
Salida:
Aquí, utilizamos “artist.0” en lugar de la tupla (‘ids’, ‘name’,) para acceder a los campos anidados. Además, utilizamos el argumento one=True en la función dump, ya que solo tenemos un registro para serializar.