0

我正在尝试序列化这个对象,这是两个表之间连接的结果:

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)

它不起作用,我无法弄清楚问题所在。它只是返回:

[{}, {}]

任何建议都受到高度赞赏。谢谢。

4

1 回答 1

2

many=True 设置 Marshmallow 迭代提供的列表,并反序列化每个对象。

该列表中的对象采用 ({}, {}) 形式。Marshmallow 期望它具有 {'company': {}, 'detail': {}} 的形式。因此,要使其正常工作,您必须先将查询结果转换为字典,然后再将它们传递给转储方法。我希望以下内容对您有用...

data, errors = companies_complete_schema.dump([{'company': x[0], 'detail': x[1]} for x in query_response])
于 2018-01-11T14:00:20.657 回答