使用链接创建字母列表

时间:2015-10-14 09:25:35

标签: python django

我有一份人员名单(类似于我的模型:

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开头的姓氏表......

提前感谢您的帮助。

1 个答案:

答案 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是具有该字母的作者

分组使用的顺序取决于内容的顺序,因此您可能需要在传入模板之前先按姓氏订购内容。