2012-03-29 52 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