2015-10-14 61 views
1

我的人的名单(类似,在我的模型:创建链接字母列表

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”(和模板)作为英文字母我想?就像ABCDE等等......每个字母都有链接,当点击一个字母时,它会输出一个表格以A B C D E等名字开头的姓氏...

在此先感谢您的帮助。

+0

如何循环遍历所有字母表中的第一个字母与另一个列表? – rohithpr

+0

你将如何得到用户点击的字母?假设'S'?我在通过url查询参数查看猜测? –

+0

而不是在tempate中进行排序,如果您先在视图中对列表进行排序,然后再将其传递给模板,则会更容易。 – Cheng

回答

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是与信

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

+0

谢谢,不幸的是我不能投票你的答案(需要先获得15声望)。 无论如何,这就是我所做的:
{%重整旗鼓含量surname.0作为作者%}

这样每个author_grouper字母都有自己的锚点,我可以通过它链接到href。 – HBMCS

+0

@ HBMCS - 很高兴为您效力,您不需要高举一个答案,但如果您愿意,您可以通过点击投票图标下面的'勾号'/'检查'轮廓内的标记来接受此答案。 – Sayse

+0

I就我所见,甚至没有投票图标! – HBMCS