在列表中排序django字段值

时间:2016-02-22 14:09:29

标签: django django-templates

我有以下模型:

class Blog():
     year = models.PositiveSmallIntegerField()
     title = models.Charfield(max_length=40)

现在在我的模板中,我目前显示的字段值如下:

{% for blog in blogs %}

    {% ifchanged %}
        <li>{{blog.year}}</li>
    {% endifchanged %}

    <li><a href="#">{{ blog.title }}</a></li>

{% endfor %}

这给了我以下html输出:

<ul>
    <li>2016</li>
    <li><a href="#">title 1</a></li>
    <li><a href="#">title 2</a></li>
    <li>2012</li>
    <li><a href="#">title 3</a></li>
</ul>

但我想得到的是以下内容:

<ul>

    <li>2016
        <ul>
            <li><a href="#">title 1</a></li>
            <li><a href="#">title 2</a></li>
        </ul>
    </li>

    <li>2012
        <ul>
            <li><a href="#">title 3</a></li>
        </ul>
    </li>

</ul>

有没有办法在django模板中执行此操作?

1 个答案:

答案 0 :(得分:3)

您可以使用regroup

{% regroup blogs by year as blog_list %}

<ul>
{% for blog in blog_list %}
    <li>{{ blog.grouper }}
    <ul>
        {% for item in blog.list %}
          <li><a href="#">{{ item.title }}</a></li>
        {% endfor %}
    </ul>
    </li>
{% endfor %}
</ul>