我在views.py中有这些代码:
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)
然后我得到了这些:
[{'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 %}
我真的想要输出是这样的:
Category A:
Mike 20
Bell 30
Category B:
Ned 23
Ben 21
Tom 28
有人对我的案子有所了解吗? 提前谢谢......
答案 0 :(得分: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 %}