当前页面的反转结果(django 分页器通用视图)

Reversing results for current page (django paginator generic view)

我在我的通用视图中使用标准的 django 分页器,如下所示:

def get_context_data(self, **kwargs):
        context = super(ArchivePagedView, self).get_context_data(**kwargs) 
        article_list = Article.published
        #=====================================
        paginator = Paginator(article_list, self.paginate_by)
        page = self.request.GET.get('page')

        try:
            article_list = paginator.page(page)
        except PageNotAnInteger:
            article_list = paginator.page(1)
        except EmptyPage:
            article_list = paginator.page(paginator.num_pages)


        if 'reverse' in self.request.GET:
            article_list = article_list.reverse() #This doesn't work!
        else:
            article_list = article_list.all()

        context['article_list'] = article_list

        return context

如您所见,我想用相同的列表覆盖 article_list,但方向相反,如果 reverse 在问号后面的 URL 中。我通过 'reverse' in self.request.GET 获得的信息。 但是我得到一个错误:AttributeError: 'Page' object has no attribute 'reverse'。我该如何扭转这一局面? (我不想在我的模板中有重复的代码。)

在我通过创建一个额外的 context 变量 (context['reverse']) 来解决这个问题之前,它表示是否应该反转列表,然后我使用了这样的重复代码:

{% if reverse %}
 {% for article in article_list reversed %}
  ... some code
 {% endfor %}
{% else %}
 {% for article in article_list %}
  ... the same code
 {% endfor %}
{% endif %}

不知道有没有更好的办法

试试这个

article_list.object_list = list(reversed(article_list.object_list))