2012-07-16 57 views
1
{% load flatpages %} 
{% get_flatpages as flatpages %} 
<ul> 
{% for page in flatpages %} 
    <li><a href="{{ page.url }}">{{ page.title }}</a></li> 
{% endfor %} 
</ul> 

上面的代碼將呈現一個簡單的無序列表,其中包含flatpages。我想使用每個flatpage的「index」屬性對它們進行排序,而不是按「url」屬性的字母順序排序(因爲它是默認完成的)。Django flatpages:排序列表

回答

3

你應該嘗試寫排序篩選,或者嘗試使用

dictsort

或者寫Django的分配標籤。

+1

Dictsort它! {%for page in flatpages | dictsort:「id」%} – 2012-07-16 16:43:22

2

既然你不能(不應)改變的flatpages的核心模型,你可以繼承它:

CustomFlatpage(Flatpage) 
    # Possible extra fields, add methods or your own object manager 
    class Meta: 
     ordering = ['somefield'] 

如果你想有一個簡單的方法,可以只寫一個templatetag是(再)對你的查詢集進行排序。這可能會導致一些開銷,但除非您的網站流量很高或包含數千個網頁,否則這應該沒問題。

{% load flatpages %} 
{% get_flatpages as flatpages %} 
<ul> 
{% for page in flatpages|your_pre_iteration_shuffle %} 
    <li><a href="{{ page.url }}">{{ page.title }}</a></li> 
{% endfor %} 
</ul>