按子页面日期排序的列表

Ordering list by date of child page

所以我有一个显示各个博客页面的列表,它们目前按上次更新顺序排列。但是我希望它们按 post.specific.date 排序。我怎样才能做到这一点?如果需要更多代码来帮助请说。

{% for post in posts %}

    <div class="...">

        <div class="...">
            {% for item in post.specific.blogpage_images.all|slice:"1" %}
                {% image item.image fill-400x400-c100 %}
                <p>{{ item.caption }}</p>
            {% endfor %}
        </div>
        <div class="...">
            <h3 class="...">{{ post.title }}</h3>
            <h5>{{ post.specific.intro }} <span
                    class="...">{{ post.specific.date }}</span></h5>
        </div>
        <div class="...">
            {{ post.specific.body|richtext }}

            <div class="...">

                <div class="...">

                    <p>
                        <button class="..."><b><a
                                class="effect-shine"
                                href="{% pageurl post %}">READ
                            MORE »</a></b>
                        </button>

                    </p>

                </div>
                <div class="...">
                    <p>
                        <span class="...">
                            <span class="...">
                                <a href="{% pageurl post %}#disqus_thread"> _
                                </a>
                            </span>
                        </span>
                    </p>
                </div>
            </div>
        </div>

    </div>

    <hr>
{% endfor %}

我的views.py代码如下

def home(request):
    posts. Post.objects.all()
    paginator = Paginator(posts,4)
    page = request.GET.get('page')
    return render(request, 'base/home.html',{'posts':posts})

Models.py也如下

class BlogIndexPage(Page):

def get_context(self, request, *args, **kwargs):
        context = super().get_context(request, *args, **kwargs)
        all_posts = BlogPage.objects.live().public().order_by('-first_published_at')
       paginator = Paginator(all_posts, 4)
        page = request.GET.get("page")
        try:
            posts = paginator.page(page)
        except PageNotAnInteger:
            posts = paginator.page(1)
        except EmptyPage:
            posts = paginator.page(paginator.num_pages)

        context["posts"] = posts
        return context

class BlogPage(Page):

您可以使用内置的 sorted 函数对任何 list 进行排序,并且您可以为其指定正确的 key 函数,以按您想要的方式进行排序:

sorted(posts, key=lambda p: p.specific.date)

您也可以将它用作循环的一部分:

{% for post in sorted(posts, key=lambda p: p.specific.date) %}