Список заказов по дате дочерней страницы - PullRequest
1 голос
/ 22 октября 2019

Итак, у меня есть список, который отображает отдельные страницы блога, и они в настоящее время упорядочены по последнему обновлению. Однако я хочу, чтобы их заказали по 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):

1 Ответ

2 голосов
/ 22 октября 2019

Вы можете отсортировать любую list со встроенной функцией sorted, и вы можете указать для нее правильную функцию key, чтобы заказать ее по своему усмотрению:

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

Вытакже можете использовать его как часть вашего цикла:

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