Python 使用Jinja';带元组的groupby过滤器

Python 使用Jinja';带元组的groupby过滤器,python,flask,sqlalchemy,jinja2,Python,Flask,Sqlalchemy,Jinja2,我正在用Jinja2模板构建一个Flask应用程序,并从Flask SQLAlchemy向其提供数据。我想基于一个查询构建一个视图(有效列表),该查询为我提供一个包含两个对象的元组(User和Registration): 在我的模板中,我想根据注册对象的属性对结果进行分组。过滤器看起来很理想,但似乎没有办法将元组成员之一的属性传递给它 在我的模板中是否有一种优雅的方法可以做到这一点?或者我需要在Python视图代码中进行分组,并以不同的结构传递模板数据(请记住,我需要将用户和注册保持成对)?一些

我正在用Jinja2模板构建一个Flask应用程序,并从Flask SQLAlchemy向其提供数据。我想基于一个查询构建一个视图(有效列表),该查询为我提供一个包含两个对象的元组(
User
Registration
):

在我的模板中,我想根据
注册
对象的属性对结果进行分组。过滤器看起来很理想,但似乎没有办法将元组成员之一的属性传递给它


在我的模板中是否有一种优雅的方法可以做到这一点?或者我需要在Python视图代码中进行分组,并以不同的结构传递模板数据(请记住,我需要将用户和注册保持成对)?

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

{% for level, items in racers|groupby('Registration.level') %}
    {{ level }}
    {% for user, registration in items %}
        {{ user.name }}
    {% endfor %}
{% endfor %}
您还可以使用
1.level
,索引查找也可以

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