Django flatpages:排序列表

时间:2012-07-16 01:28:18

标签: python django django-flatpages

{% 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”属性的字母顺序排序(默认情况下这样做)。

2 个答案:

答案 0 :(得分:3)

您应该尝试编写排序过滤器,或尝试使用

dictsort

或者写django赋值标记。

答案 1 :(得分:2)

由于您不能(不应该)更改flatpages的核心模型,您可以继承它:

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

如果你想要一个简化的方法,可以写一个(重新)排序你的查询集的模板标签。这可能会导致一些开销,但除非您的网站流量很大或包含数千个平面页,否则这应该没问题。

{% 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>