我有一份人员名单(类似于我的模型:
surname = models.CharField(max_length=255)
firstname = models.CharField(max_length=255)
我想为姓氏的每个起始字母输出一个表格。所以,例如(在模板中):
<table class='table'>
{% for author in content %}
<tr>
{% if author.surname|first == "A" %}
<td>{{ author.surname }}</td>
{% endif %}
</tr>
{% endfor %}
</table>
以上代码有效。不过,是否有可能在某种程度上自动化上述代码,而不是像字母表那样构建尽可能多的“ifs”(和模板)?我喜欢A B C D E等......每个字母都有链接,当点击一个字母时,它会输出一个以A B C D E开头的姓氏表......
提前感谢您的帮助。
答案 0 :(得分:3)
您可以使用regroup
{% regroup content by surname.0 as authors %}
<ul>
{% for author in authors %}
<li>{{ author.grouper }}
<ul>
{% for item in author.list %}
<li>{{ item.get_surname}}</li>
{% endfor %}
</ul>
</li>
{% endfor %}
</ul>
这将按姓氏的第一个字符重新组合您的内容,grouper
然后成为第一个字母,而list
是具有该字母的作者
分组使用的顺序取决于内容的顺序,因此您可能需要在传入模板之前先按姓氏订购内容。