flask-marshmallow一个模式中的两个db对象

时间:2018-01-11 13:51:14

标签: flask flask-sqlalchemy marshmallow

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

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)

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

[{}, {}]

任何建议都非常感谢。感谢。

1 个答案:

答案 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])