gpt4 book ai didi

python - 如何使用过滤查询集处理通用 ListView 分页?

转载 作者:行者123 更新时间:2023-12-05 07:34:14 25 4
gpt4 key购买 nike

代码:

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')

我有一个 View ,其中列出了用户添加到表中的内容。问题是分页无法正常工作。我认为这是因为每次 django 呈现页面时,它都会再次过滤查询集,导致只列出前 10 个项目。可以做些什么来处理这个问题?或者我不应该使用通用 View 来做这样的事情吗?

模板:

<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">&laquo;</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">&raquo;</span>
</a>
</li>
</ul>
</nav>

最佳答案

我发现了我的错误。在我的模板中,我使用了链接“?sayfa={{ page }}”。 (“sayfa”在土耳其语中表示页面,因此它是本地化版本)这是我之前使用基于函数的 View 制作的分页的遗留物。一种解决方法是将所有“sayfa”更改为“page”,但由于这不利于本地化,因此在我的 View 中添加 page_kwarg = "sayfa" 解决了该问题。感谢您的回答!

关于python - 如何使用过滤查询集处理通用 ListView 分页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50259580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com