Как заставить пагинатор циклически перебирать набор запросов
Я использую класс Paginator на странице, которая отображает каждое сообщение, опубликованное пользователями, за которыми следит вошедший в систему пользователь.
У меня проблемы с отображением правильного количества страниц. Я думаю, что проблема находится в post_list = all_posts
, но я не смог понять, как ее решить. all_posts - это список наборов запросов, нужно ли мне просмотреть этот список и присвоить наборы запросов списку post_list? Если да, то как я могу это сделать?
views.py:
def following(request, username):
try:
all_posts = []
follow_item = Follow.objects.filter(follower = request.user)
for item in follow_item:
posted_by = item.following
posts = AllPost.objects.filter(user = posted_by).order_by("date").reverse()
all_posts.append(posts)
post_list = all_posts
paginator = Paginator(post_list, 10) # Show 10 posts per page.
page_number = request.GET.get('page')
page_obj = paginator.get_page(page_number)
return render(request, "network/following.html",{
"page_obj":page_obj,
"follow_item": follow_item
})
except:
follow_item = False
return render(request,"network/following.html",{
"posts": post_list
})
following.html:
{% extends "network/layout.html" %}
{% block body %}
{% if follow_item %}
{% for object in page_obj %}
{{ post.full_name|upper }}<br>
{% for post in object %}
<div class="frame">
<h4><a href="{% url 'profile' post.user.username %}" style="color: black;">{{post.user.username}}</a></h4>
<div>{{post.content}}</div>
<div id="grey">{{post.date}}</div>
<div id="grey">{{post.likes}}</div>
<a href="#" style="color: grey;">Comment</a>
</div>
{% endfor %}
{% endfor %}
{% else %}
<div class="alert alert-warning" role="alert">
You do not follow any user.
</div>
{% endif %}
<nav aria-label="Page navigation example">
<ul class="pagination justify-content-end" style="padding: 10px;">
{% if page_obj.has_previous %}
<li class="page-item"><a class="page-link" href="?page=1">« First</a></li>
<li class="page-item"><a class="page-link" href="?page={{ page_obj.previous_page_number }}">Previous</a></li>
{% else %}
<li class="page-item disabled"><a class="page-link" href="?page=1">« First</a></li>
<li class="page-item disabled"><a class="page-link" href="#">Previous</a></li>
{% endif %}
{% for page in page_obj.paginator.page_range %}
<li class="{% if page_obj.number == page %}page-item active{% endif %}"><a class="page-link" href="?page={{page }}">{{ page }}</a></li>
{% endfor %}
{% if page_obj.has_next %}
<li class="page-item"><a class="page-link" href="?page={{ page_obj.next_page_number }}">Next</a></li>
<li class="page-item"><a class="page-link" href="?page={{ page_obj.paginator.num_pages }}">Last »</a></li>
{% else %}
<li class="page-item disabled"><a class="page-link" href="#">Next</a></li>
<li class="page-item disabled"><a class="page-link" href="?page={{ page_obj.paginator.num_pages }}">Last »</a></li>
{% endif %}
</nav>
{% endblock %}
И то, что я получаю, это только страница 1, даже если там более 10 сообщений.