考虑一个简单的Django模型:
class MyModel(models.Model):
a = models.CharField()
b = models.CharField()
一个在视图中获取它们的查询:
objs = MyModel.objects.all()
现在这里是棘手的部分,模板应该渲染具有相同a
字段的对象。所以,如果我有三个对象:
{a:'1', b:'5'}, {a:'1', b:'8'}, {a:'2', b:'4'}
他们应该在输出中这样渲染:
基本上,我需要按a
字段对对象进行分组,并以不同于具有唯一a
字段的对象的方式呈现这些组。
我应该如何分组这些对象并以不同方式显示它们?
答案 0 :(得分:2)
按a
字段对其进行排序,然后使用regroup
标记对模板进行分组。
代码示例:
{% regroup objs by a as objs_list %}
<ul>
{% for a in objs_list %}
{% if a.list|length == 1 %}
<li>{{ a.grouper }}, {{ a.list.0.b }}</li>
{% else %}
<li>{{ a.grouper }}
<ul>
{% for obj in a.list %}
<li>{{ obj.b }}</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>