我正在尋找關於設計帶有A-Z索引的網頁的建議。A-Z索引Django
有點像:
http://www.bls.gov/bls/topicsaz.htm 我有對象的一個長長的清單,有一個標題,我想這樣做顯示的字母順序,方便!
但我想放在A-Z與錨,做我的模板做到這一點,
我將不得不遍歷模板中的所有對象,存儲currentletter作爲一個全球性的。然後檢查每個對象是否以當前字母開頭等。
這不是很好,有沒有更簡單的方法,我失蹤了。
也許我應該在python代碼中執行它?
我正在尋找關於設計帶有A-Z索引的網頁的建議。A-Z索引Django
有點像:
http://www.bls.gov/bls/topicsaz.htm 我有對象的一個長長的清單,有一個標題,我想這樣做顯示的字母順序,方便!
但我想放在A-Z與錨,做我的模板做到這一點,
我將不得不遍歷模板中的所有對象,存儲currentletter作爲一個全球性的。然後檢查每個對象是否以當前字母開頭等。
這不是很好,有沒有更簡單的方法,我失蹤了。
也許我應該在python代碼中執行它?
通過django模板標籤查找我發現了一個很好的方法來做它{{ifchanged}},它的值得一提的未來使用。
我的對象列表傳遞給我的模板按字母順序排列:
Objects.get.all().order_by('title')
然後在我的模板,我做的:
# loop through all objects
{% for obj in objs %}
#display the letter only when it changes
{% ifchanged obj.title.0 %}<h1>{{obj.title.0}}</h1>{% endifchanged%}
# display the object
<h2>obj.title</h2>
{% endfor %}
它在模板的代碼非常方便的1線peice的。
太好了!非常方便。 – weeheavy 2013-02-22 22:15:54
您可以使用reqroup模板標籤組項目... 讓標題是您的字段進行索引... 首先,在您的視圖篩選對象和索引參數添加到每個進行分組:
objectList = SomeModel.objects.all()
for x in objectList:
x.__setattr__('index', x.headline[0])// first letter of headline
Regroup Documentation,對剩下的足夠的信息,但是簡單地說,通過索引regrup和錨item.grouper爲索引鏈接...
有幾個片段,可以幫助你:
http://djangosnippets.org/snippets/1364/
http://djangosnippets.org/snippets/1051/
華盛頓時報有一個nice blog post有關建設這可能給你一些有益的想法管理員按字母順序排列的過濾器。
你也可以直接使用模板重組:
{% regroup object_list by name.0 as letters %}
{% for letter in letters %}
<div class="letter_group" id="index_{{letter.grouper}}">
<h2>{{letter.grouper}}</h2>
<ul>
{% for object in letter.list %}
<li><a href="{% url object_show object.pk %}">{{object}}</a></li>
{% endfor %}
</ul>
</div>
{% endfor %}
如果你提供有關尤爾模型和字段名稱一些示例代碼,我可以寫更具體的答案 – FallenAngel 2010-09-01 10:50:07