ListViewを使用して、すべてのNewPersonを表示し、5つの結果でページ分割しています。NewPersonsがテーブルに表示され、左側に検索ボックスがあります。検索時に「q」がGETで要求されます。検索時にクエリセットを変更するために、ビューのget_querysetメソッドをオーバーライドしました。
私が抱えている問題は、検索によって5つを超える結果が返された場合、5つの結果でページ付けされているため、ページ付けされていることです。ただし、[次へ]をクリックして2番目のページを表示すると、検索結果の2番目のページではなく、オブジェクトの完全なリストの2番目のページが返されます。
そのため、検索結果を適切にページ分割する方法を考えています。ありがとう。JD
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