如何使用Jinja2模板添加嵌套groupby

时间:2016-12-09 19:19:07

标签: python flask filter group-by jinja2

我有一个视图,我正在打印last_namemrn患者。由于患者可以多次给出特定的诊断,我希望按患者和诊断进行分组。

我用Google搜索就像疯了一样无法找到任何应​​用嵌套的groupby过滤器,就像我想要实现的那样(我很难相信,因为我的用例并不常见)。

无论如何,我尝试了各种嵌套策略,我能想到的最好的是:

{% for item in patient_diagnoses  %}
    {% for group in patient_diagnoses | groupby('dx_name') %}
        {{ group.grouper }}: {{ group.list | groupby('mrn') }}

    {% endfor %}

    mrn: {{ item.mrn }} dx: {{ item.dx_name }}
{% endfor %}

这种方式有点,但不是单行输出,而是我得到2行(我检查过,特定患者有8种相同类型的诊断)。我希望由于对Jinja2没有很好的经验,我的实现只是搞砸了。

修改

数据(从SQLAlchemy返回)看起来像,唯一的区别是dx_date

{'dx_name': u'Atrial septal defect', 'first_name': u'Test', 'last_name': u'Patient', 'mrn': u'12345678', 'dx_date': u'1/28/2015'}

{'dx_name': u'Atrial septal defect', 'first_name': u'Test', 'last_name': u'Patient', 'mrn': u'12345678', 'dx_date': u'1/28/2014'}

{'dx_name': u'Atrial septal defect', 'first_name': u'Test', 'last_name': u'Patient', 'mrn': u'12345678', 'dx_date': u'1/28/2013'}

{'dx_name': u'Atrial septal defect', 'first_name': u'Test', 'last_name': u'Patient', 'mrn': u'12345678', 'dx_date': u'1/28/2012'}

{'dx_name': u'Atrial septal defect', 'first_name': u'Test', 'last_name': u'Patient', 'mrn': u'12345678', 'dx_date': u'1/28/2011'}

...

因此,我想看到我的模板上只呈现了一个实例:

mrn: 12345678 dx: Atrial septal defect 

但是,它打印了其中两个,而不是一个。

1 个答案:

答案 0 :(得分:0)

在经历了很多困难之后,我明白了:

{% for group in value_columns | groupby('dx_name') %}
    {% for group2 in group.list | groupby('mrn') %}
       mrn: {{ group2.grouper }} dx: {{ group.grouper }}
    {% endfor %}
{% endfor %}

给了我想要的单个实例。底部的东西让人分心。