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

上面的代码将呈现一个包含平面页面的简单无序列表。我想使用每个平面页面的“索引”属性对它们进行排序,而不是按“url”属性的字母顺序(默认情况下)。

4

2 回答 2

3

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

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>
于 2012-07-16T09:04:36.907 回答
3

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

字典排序

或者写django赋值标签。

于 2012-07-16T09:39:48.113 回答