2015-10-14 88 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