在Django模板

时间:2016-09-22 12:57:53

标签: python django django-templates

我收到的JSON对象包含许多对象和对象列表等。其中一个列表是Year列表,​​如下所示:

[{'Year': '2015', 'Status': 'NR', 'Month': 'Jan'
{'Year': '2014', Status': '', 'Month': 'Jan'}, 
{'Year': '2015', 'Status': '',Month': 'Feb'}, 
{'Year': '2014', Status': '', 'Month': 'Feb'}, 
{'Year': '2015', 'Status': '', Month': 'Sep'}, 
{'Year': '2014', 'Status': 'OK', 'Month': 'Sep'}, 
{'Year': '2015', 'Status': '', 'Month': 'Oct'}, 
{'Year': '2014', 'Status': 'OK', 'Month': 'Oct'}] 

我需要按年份对此列表进行分组,并根据其年份显示月份。例如:

{"2015":[{"Month":"Jan", "Status":"NR"}, {"Month" : "Feb". "Status" :""}]

现在,我使用的代码并没有按照我想要的方式工作,而是根据月数重复这些年份:

2015                                                
2014                                                
2015                                                
2014                                                
2015                                                
2014                                                
2015                                                
2014

这是代码:

{% regroup x.LstPaymentBehaviour by Year as yearList %} 
  {% for ym in yearList  %}
    <tr>
           <td><strong>{{ ym.grouper }}</strong></td>
    </tr>
  {% endfor %}

我错过了什么?

1 个答案:

答案 0 :(得分:3)

docs:https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#regroup

regroup首先需要有序数据。如果所有具有相同年份的项目都是连续的,那么您将获得所需的输出。首先对输入数据进行排序

{% regroup x.LstPaymentBehaviour|dictsort:'Year' by Year as yearList %}