2012-03-29 33 views
1

我在我的views.py這些代碼:在我的模板分組在模板Django的排序

[{'Name': u'Mike', 'Age': 20, 'Category':'A'}, 
{'Name': u'Bell', 'Age': 30, 'Category':'A'}, 
{'Name': u'Ned', 'Age': 23, 'Category':'B'}, 
{'Name': u'Ben', 'Age': 21, 'Category':'B'}, 
{'Name': u'Tom', 'Age': 28, 'Category':'B'},] 

{% if persons %} 
{% for p in persons %} 
    Category {{p.Category}} :<br>{{p.Name}} <br> {{p.Age}} 
{% endfor %} 
{% endif %} 

array = [] 
p = Person.objects.filter(client=1,status='Complete').values('name', 'age', 'category').order_by('category') 
for x in p: 
d = {'Name': x['name'], 'Age': x['age'], 'Category':x['category']} 
array.append(d) 

然後我得到了這些真的想要輸出是這樣的:

Category A: 
Mike 20 
Bell 30 

Category B: 
Ned 23 
Ben 21 
Tom 28 

有人對我的情況有了解嗎? 在此先感謝...

回答

2

您可以使用regroup模板標籤

{% if persons %} 
    {% regroup persons by "Category" as people_list %} 
    {% for key, val in people_list.items %} 
     {{ key|title }} : <br /> {{ val|title }} 
    {% endfor %} 
{% endif %} 

需要注意的是values

返回ValuesQuerySet - 一個QuerySet子類作爲可迭代使用時,返回的字典而不是模型實例對象。

這樣可以去掉這個:

for x in p: 
    d = {'Name': x['name'], 'Age': x['age'], 'Category':x['category']} 
    array.append(d) 

,改變重新組合到:

{% regroup persons by category as people_list %} 
+0

感謝您的幫助pastylegs ... – gadss 2012-03-29 07:01:25