traducir inglés ingles español cómo como python sqlalchemy marshmallow

python - ingles - cómo se dice en inglés



Cómo anidar algunos campos de objeto padre al serializar objetos usando malvavisco (1)

Estoy usando marshmallow para serializar un objeto sqlalchemy que tiene una estructura plana como:

class Company(Base): __tablename__ = ''Company'' id = sa.Column(sa.Integer, primary_key=True) MainStreetAddress = sa.Column(sa.String) MainCity = sa.Column(sa.String) MainState = sa.Column(sa.String) MainZip = sa.Column(sa.String) AltStreetAddress = sa.Column(sa.String) AltCity = sa.Column(sa.String) AltState = sa.Column(sa.String) AltZip2 = sa.Column(sa.String)

Al serializar, me gustaría que marshmallow agrupe los campos de direcciones relacionadas de esta manera:

{''id'':1, ''main_address'':{''street_address'':''101 main st'',''city'':''springfield'',''state'':''IL'',''zip'':''11231''}, ''alt_address'':{''street_address'':''102 main st'',''city'':''new bedford'',''state'':''MA'',''zip'':''07630''}}

¿Hay alguna manera de obtener malvavisco para hacer esto sin usar @post_dump? Sé que puedo anidar otros esquemas con Nested (), pero en este caso me gustaría anidar ciertas columnas desde el propio esquema principal.


Tal vez ... En tu clase de esquema agrega un campo. Método:

class Company(Base): __tablename__ = ''Company'' id = sa.Column(sa.Integer, primary_key=True) MainStreetAddress = sa.Column(sa.String) MainCity = sa.Column(sa.String) MainState = sa.Column(sa.String) MainZip = sa.Column(sa.String) AltStreetAddress = sa.Column(sa.String) AltCity = sa.Column(sa.String) AltState = sa.Column(sa.String) AltZip2 = sa.Column(sa.String) class CompanySchema(Schema): id = fields.Integer() main_address = fields.Method(''make_main_address'') alt_address = fields.Method(''make_alt_address'') def make_main_address(self, obj) return {''main_address'':{''street_address'':obj.MainStreetAddress,''city'':obj.MainCity ,''state'':obj.MainState,''zip'':obj.MainZip}} def make_alt_address(self, obj) return {''alt_address'':{''street_address'':obj.AltStreetAddress,''city'':obj.AltCity ,''state'':obj.AltState,''zip'':obj.AltZip2}}

Eche un vistazo a la documentación de Marshmallow