Django将主题排序到带有固定项目的第一个字母块中

时间:2017-06-20 10:27:34

标签: python django

我正在尝试制作一个显示论坛网站上所有主板的页面,并根据第一个字母将它们分类为块。输出看起来像这样:

A

苹果

攻击

香蕉

等...

{% regroup boards|dictsort:"name" by name.0 as item_letter %}
<ul>
    {% for letter in item_letter %}
        <h2>{{ letter.grouper|title }}</h2>
        {% for i in letter.list|dictsort:"name" %}
            <li>{{ i.name }}</li>
        {% endfor %}
    {% empty %}
        <p><a href="/boards/new">Create a board</a></p>
    {% endfor %}
</ul>

然而,有些电路板是固定的,应该出现在电池块的顶部:

A

(固定)攻击

苹果

等...

这里的主要问题是上面的代码会覆盖查询集的顺序(因为它当前设计为),并且固定项目不会出现在其块的顶部。我该如何重做呢?

boards = Board.objects.all().order_by('-pinned')

1 个答案:

答案 0 :(得分:0)

您可以尝试传递2结果集而不是一个

boards_pinned = Board.objects.filter(pinned=True).order_by('name')
boards = Board.objects.filter(pinned=False).order_by('name')

然后像您在模板上所做的那样迭代boards_pinnedboards