代码:
class MyObjects(LoginRequiredMixin, ListView):
model = AllObjects
template_name = "my_objects.html"
paginate_by = 10
def get_queryset(self, *args, **kwargs):
queryset = super(MyObjects, self).get_queryset()
return queryset.filter(added_by=self.request.user).order_by('-last_modified')
我有一个视图,列出用户对表的添加。问题是分页不正常。我认为这是因为每次django渲染页面时,它都会再次过滤查询集,导致只列出前10个项目。可以做些什么来处理这个问题?或者我不应该使用通用视图来做这样的事情吗?
模板:
<table>
{% for obj in object_list %}
<tr>
<td>
{{ obj.name}}
</td>
</tr>
{% endfor %}
</table>
<nav aria-label="Page navigation">
<ul class="pagination">
<li class="page-item {% if not page_obj.has_previous %}disabled{%endif%}">
<a class="page-link" {% if page_obj.has_previous %} href="?sayfa={{ page_obj.previous_page_number }}" {% endif %} aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
{% for page in page_obj.paginator.page_range %} {% if page == page_obj.number %}
<li class="page-item active"><a class="page-link" href="#">{{ page }}</a></li>
{% else %}
<li class="page-item"><a class="page-link" href="?sayfa={{ page }}">{{ page }}</a></li>
{% endif %} {% endfor %}
<li class="page-item {% if not page_obj.has_next %}disabled{%endif%}">
<a class="page-link" {% if page_obj.has_next %}href="?sayfa={{ page_obj.next_page_number }}" {% endif %} aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
</ul>
</nav>
答案 0 :(得分:0)
我发现了自己的错误。在我的模板中,我使用了链接“?sayfa = {{page}}”。 (“sayfa”表示土耳其语中的页面,因此它是本地化版本)这是我之前使用基于功能的视图进行分页的剩余部分。一种解决方法是将所有“sayfa”更改为“page”,但由于这不适合本地化,因此在我的视图中添加page_kwarg = "sayfa"
可以解决问题。谢谢你的答案!