2016-12-09 4 views
1

Ich habe eine Ansicht, in der ich last_name und mrn von Patienten drucke. Da eine bestimmte Diagnose für einen Patienten mehrfach vergeben werden kann, würde ich gerne nach Patient und Diagnose gruppieren.Wie verschachtelte Gruppen hinzugefügt werden, indem Jinja2-Vorlagen verwendet werden

Ich googelte wie verrückt und konnte nichts über das Anwenden verschachtelter Groupby-Filter finden, wie ich versuche zu erreichen (was ich kaum glauben kann, da mein Anwendungsfall nicht so ungewöhnlich ist).

Auf jeden Fall habe ich verschiedene Verschachtelung Strategien ausprobiert und das Beste, was ich tun konnte, war:

{% 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 %} 

Dies funktioniert, Art, aber anstelle einer einzelnen Zeile ausgegeben, erhalte ich zwei Reihen (Ich habe überprüft und der Patient hat 8 Diagnosen des gleichen Typs). Ich hoffe, dass meine Umsetzung davon nur verrückt ist, weil ich mit Jinja2 nicht sehr erfahren bin.

EDIT

Die Daten (zurück von SQLAlchemy) aussehen, mit dem einzigen Unterschied, den dx_date sein:

{'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'} 

...

So möchte ich sehen Nur eine Instanz wird auf meiner Vorlage gerendert:

mrn: 12345678 dx: Atrial septal defect 

Aber es druckt zwei davon, nicht eins.

Antwort

0

Nach vielen futzing herum, ich habe es:

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

gibt mir die gewünschte einzelne Instanz. Das Zeug auf dem Boden war eine Ablenkung.

Verwandte Themen