gpt4 book ai didi

django - 分页搜索结果 ListView

转载 作者:行者123 更新时间:2023-12-01 09:22:06 25 4
gpt4 key购买 nike

我正在使用 ListView 显示所有 NewPersons 并按 5 个结果分页。 NewPersons 显示在一个表中,左侧有一个搜索框。在 GET 中请求搜索“q”时。为了在搜索时更改查询集,我重写了 View 的 get_queryset 方法。

我遇到的问题是,如果搜索返回的结果超过 5 个,我将对 5 个结果进行分页;但是,如果单击下一步查看第二页,它会返回完整对象列表的第二页,而不是搜索结果的第二页。

所以我想知道如何正确地对我的搜索结果进行分页。谢谢。京东

class PersonListView(ListView):
model = NewPerson
template_name = 'list.html'
paginate_by = 5

def get_queryset(self):
"""
Get the list of items for this view. This must be an interable, and may
be a queryset (in which qs-specific behavior will be enabled).
"""
if 'q' in self.request.GET:
q = self.request.GET['q']
queryset = NewPerson.objects.filter(Q(FirstName__icontains=q) | Q(LastName__icontains=q))
else:
if self.queryset is not None:
queryset = self.queryset
if hasattr(queryset, '_clone'):
queryset = queryset._clone()
elif self.model is not None:
queryset = self.model._default_manager.all()
else:
raise ImproperlyConfigured(u"'%s' must define 'queryset' or 'model'"
% self.__class__.__name__)
return queryset

最佳答案

给你添加类似这样的 ListView 模板:

{% if request.GET.q %}

<a href="?search={{ request.GET.search}}&page={{ page_obj.next_page_number }}">
Next&nbsp;&raquo;
</a>

{% else %}

<a href="?page={{ page_obj.next_page_number }}">Next&nbsp;&raquo;</a>

{% endif %}

关于django - 分页搜索结果 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13114753/

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