我正在构建一个带有Jinja2模板的Flask应用程序,并从Flask-SQLAlchemy提供数据。我想基于一个查询来构建一个视图(有效列表),该查询为我提供了一个包含两个对象(User
和Registration
)的元组:
eligible_racers = db.session.query(User, Registration).filter(User.id==Registration.racer_id).filter(Registration.team_id==team_id).filter(Registration.season_id==race.season_id).all()
在我的模板中,我想根据Registration
对象的属性对结果进行分组。 grouby
过滤器似乎很理想,但似乎没有办法将其传递给其中一个元组成员的属性。
在我的模板中有优雅的方法吗?或者我是否需要在Python视图代码中进行分组并将模板传递给结构不同的数据(请记住,我需要保持用户和注册配对)?
答案 0 :(得分:1)
一些Jinja过滤器(包括groupby
)通过将属性与.
分开来处理多级属性查找。 SQLAlchemy查询返回带键的元组,其名称为selectable(在本例中为模型)作为属性名称。
{% for level, items in racers|groupby('Registration.level') %}
{{ level }}
{% for user, registration in items %}
{{ user.name }}
{% endfor %}
{% endfor %}
你也可以使用1.level
,索引查找也可以。