首页 > 解决方案 > 如何在单个对象中展平 SQLAlchemy 查询的结果?

问题描述

我有一个User模型,我想进行查询以获取具有一些额外计算字段的所有用户。我正在使用 SQLAlchemy 执行我的查询和 Flask 进行模板化:

db.session.query(User, func.sum(Pet).label(nb_pets).join(Pet.parent_id === User.id)

我得到的结果有这种格式:

[(<User 123>, 4), (<User 456>, 1), ...]

如果我想在我的模板中呈现用户列表,我必须这样做

{% for row in users %}
   {{ row[0].name }}
   {{ row.nb_pets }}
{% endfor %}

我应该怎么做才能在用户对象上添加计算字段?我希望能够执行:

{% for user in users %}
   {{ user.name }}
   {{ user.nb_pets }}
{% endfor %}

标签: pythonflasksqlalchemy

解决方案


使用序列解包将“行”分成两部分:

{% for user, nb_pets in users %}
   {{ user.name }}
   {{ nb_pets }}
{% endfor %}

推荐阅读