将 Jinja 的 groupby 过滤器与元组一起使用

Use Jinja's groupby filter with tuples

我正在使用 Jinja2 模板构建一个 Flask 应用程序,并从 Flask-SQLAlchemy 向它提供数据。我想根据一个查询构建一个视图(有效列表),该查询给我一个包含两个对象(UserRegistration)的元组:

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 视图代码中进行分组并向模板传递不同结构的数据(请记住我需要将用户和注册配对)?

一些 Jinja 过滤器,包括 groupby,通过用 . 分隔属性来处理多级属性查找。 SQLAlchemy 查询返回键控元组,其中可选名称(本例中为模型)作为属性名称。

{% for level, items in racers|groupby('Registration.level') %}
    {{ level }}
    {% for user, registration in items %}
        {{ user.name }}
    {% endfor %}
{% endfor %}

您也可以使用 1.level,索引查找也可以。