【问题标题】:flask-marshmallow two db objects in one schemaflask-marshmallow 一个模式中的两个 db 对象
【发布时间】:2018-06-20 21:00:46
【问题描述】:

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

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)

它不起作用,我无法找出问题所在。 它只是返回:

[{}, {}]

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

【问题讨论】:

    标签: flask flask-sqlalchemy marshmallow


    【解决方案1】:

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

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

    data, errors = companies_complete_schema.dump([{'company': x[0], 'detail': x[1]} for x in query_response])
    

    【讨论】:

      猜你喜欢
      • 2020-05-21
      • 1970-01-01
      • 2015-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      • 2016-11-14
      • 1970-01-01
      相关资源
      最近更新 更多