2012-10-06 5 views
4

Je suis en train de regrouper une liste de dates/heures à Jinja par mois/année. Voici le code que j'ai en ce moment:Groupe Jinja2 par mois/année

{% for group in EventsList|groupby('date') %} 
     <b>{{group.grouper}}</b><br /> 
     {% for event in group.list %} 
      <i>{{event.title}}</i> 
     {% endfor %} 
    {% endfor %} 

Mais le problème est qu'il se groupe actuellement à une date spécifique. J'aimerais regrouper par mois/année (c'est-à-dire janvier 2011, février 2011 etc.).

Serait-il plus efficace de le faire en Python à la place?

merci!

Répondre

6

Vous pouvez d'abord GroupBy ('Date.Year'), puis GroupBy ('date.month').

{% for year, year_group in EventsList|groupby('date.year') %} 
    {% for month, list in year_group|groupby('date.month') %} 
     <b>{{ month }} {{ year }}</b><br /> 
     {% for event in list %} 
      <i>{{event.title}}</i> 
     {% endfor %} 
    {% endfor %} 
{% endfor %} 
+0

Merci! Je me demande simplement s'il est possible de formater le {{month}} en tant que forme longue (c'est-à-dire en octobre) au lieu d'un nombre (c'est-à-dire 10). Je considérais aussi une autre approche où je venais de créer une autre colonne dans le magasin de données pour le mois/année forme longue (à savoir « Octobre 2012 ») ... mais ce serait assez inefficace. – iceanfire

+0

Vous pouvez utiliser '{{month.strftime ('% B')}}'. Voir http://docs.python.org/2/library/datetime.html#strftime-strptime-behavior – liclac