пагинацию делается в paginate_queryset
, названный get_context_data
, названный post
(что по умолчанию в subcall к get
), так что вы можете так что-то вроде (при вас есть метод фильтрации, фильтры на основе почтовых данных):
def post(self, request, *args, **kwargs):
self.queryset = self.filter(self.get_queryset())
return super(MyView, self).get(request, *args, **kwargs)
родительский пост будет вызывать get_queryset
, который возвращает отфильтрованные self.queryset
, и отформатирует его при вызове get_context_data
, чтобы не отображать QuerySet на первом get
,
def get(self, request, *args, **kwargs):
return self.self.response_class(
request=self.request,
template=self.get_template_names())
нумерация страниц шаблона ссылка всегда должны размещать на представлении вместо стандартного получить так сохранить поиск входа в контексте и изменить шаблон для разбиения на страницы, с
def get_context_data(self, **kwargs):
context = super(MyView, self).get_context_data(**kwargs)
context['search_value'] = self.request.POST.get('search_name', None)
return context
,
<form action="?page={{ page_obj.previous_page_number }}" method="post">
{% csrf_token %}
<input type="hidden" value="{{ search_value }}" name="search_name">
<button type="submit">«</button>
</form>
и на следующей ссылке:
<form action="?page={{ page_obj.next_page_number }}" method="post">
{% csrf_token %}
<input type="hidden" value="{{ search_value }}" name="search_name">
<button type="submit">»</button>
</form>
Я думаю, что вопрос будет более ясным, если вы включили остальную часть своего взгляда. – Alasdair