Доброго дня.
Существует проблема с пагинацией. Суть желаю вывести пять записей категории и получить пагинацию на всю категорию.
В реале же, получаю все записи категории на каждой странице пагинации, и количество страниц пагинации равно ( общее количество статей всего сайте / 5 ), а не ( общее количество страниц категории / 5) .
Читал документацию, искал по форуму и в инете. Не смог разобраться.
вью:
class CategoryView(generic.ListView):
template_name = 'gb_blog/category.html'
context_object_name = "category_posts"
paginate_by = 5
model = Article
def get_context_data(self, **kwargs):
context = super(CategoryView, self).get_context_data(**kwargs)
slug_category = self.kwargs['slug_category']
context['category_posts'] = Article.objects.filter( slug_category = slug_category ).order_by('-created')
context['category_leading_post'] = Article.objects.filter( slug_category = slug_category ).order_by('?')[:1]
context['random_five_posts'] = get_five_random_posts(self)
return context
шаблон:
{% if is_paginated %}
<ul class="pagination">
<li><a href="?{{ page_path }}page=1">Первая</a></li>
{% if page_obj.has_previous %}
<li><a href="?{{ page_path }}page={{ page_obj.previous_page_number }}">«</a></li>
{% endif %}
{% for p in paginator.page_range %}
{% if p == page_obj.number %}
<li class="active"><a href="#">{{ page_obj.number }}</a></li>
{% else %}
<li><a href="?{{ page_path }}page={{ p }}">{{ p }}</a></li>
{% endif %}
{% endfor %}
{% if page_obj.has_next %}
<li><a href="?{{ page_path }}page={{ page_obj.next_page_number }}">»</a></li>
{% endif %}
<li><a href="?{{ page_path }}page={{ paginator.num_pages }}">Последняя</a></li>
</ul>
{% endif %}
То, что пагинатор считает от количества статей всего сайта, собака здесь, как я понимаю: for p in paginator.page_range . Но, как указать range категории не знаю.