我正在尝试序列化这个对象,这是两个表之间连接的结果:
query_response = [(<Company 2>, <Detail 1>), (<Company 3>, <Detail 2>)]
我正在使用这个架构:
class CompanyCompleteSchema(Schema):
company = fields.Nested(CompanySchema)
detail = fields.Nested(DetailSchema)
companies_complete_schema = CompanyCompleteSchema(many=True)
基本上,我想为连接查询设置一个模式。 我正在使用:
data = companies_complete_schema.dump(query_response)
它不起作用,我无法弄清楚问题。 它只是返回:
[{}, {}]
任何建议都非常感谢。感谢。
答案 0 :(得分:1)
many = True设置Marshmallow迭代提供的列表,并反序列化每个对象。
该列表中的对象的格式为({},{})。 Marshmallow希望它的形式为{&#39; company&#39;:{},&#39; detail&#39;:{}}。因此,为了使其工作,您必须在将查询结果传递给转储方法之前将其转换为字典。我希望以下内容对你有用......
data, errors = companies_complete_schema.dump([{'company': x[0], 'detail': x[1]} for x in query_response])