我在我的通用视图中使用标准的django paginator,如下所示:
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 %}
我想知道是否没有更好的解决方案。
答案 0 :(得分:0)
试试这个
article_list.object_list = list(reversed(article_list.object_list))