我有一个视图,我正在打印last_name
和mrn
患者。由于患者可以多次给出特定的诊断,我希望按患者和诊断进行分组。
我用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
但是,它打印了其中两个,而不是一个。
答案 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 %}
给了我想要的单个实例。底部的东西让人分心。