Разбиение на страницы не работает для нескольких запросов - PullRequest
0 голосов
/ 04 февраля 2019

Я использую нумерацию страниц, но не просыпаюсь.Я использовал с get_queryset(), и это работает.Почему это не работает в get_context_view()

class UserListView(LoginRequiredMixin, generic.TemplateView):
    template_name = 'users/users.html'
    paginate_by = 1

    def get_context_data(self, **kwargs):   
        context = super(UserListView, self).get_context_data(**kwargs)
        context['companies'] = Company.objects.exclude(company_is_deleted=True).exclude(company_name='Apollo')
        context['users'] = User.objects.filter(userprofile__user_role__id=2).exclude(
            Q(is_superuser=True) | 
            Q(userprofile__user_is_deleted = True)|
            Q(userprofile__user_company__company_is_deleted=True)
            )
        query = self.request.GET.get('query') 
        if query:
            list_query = context['users']
            context['users'] = list_query.filter(userprofile__user_company__company_name__icontains=query)
        return context

1 Ответ

0 голосов
/ 04 февраля 2019

TemplateView не предоставляет нам нумерацию страниц.мы можем использовать ListView.Не рекомендуется разбивать на страницы методом get_context_data.Для нумерации страниц следует использовать метод get_queryset.

Пример:

class UserListView(LoginRequiredMixin, generic.ListView):
  paginate_by = 10  

  def get_queryset(self, **kwargs):   
        queryset = User.objects.filter(userprofile__user_role__id=2).exclude(
            Q(is_superuser=True) | 
            Q(userprofile__user_is_deleted = True)|
            Q(userprofile__user_company__company_is_deleted=True)
            )
        query = self.request.GET.get('query') 
        if query:
            queryset = list_query.filter(
                 userprofile__user_company__company_name__icontains=query)
        return queryset

Если вы используете ListView, то в шаблоне вы можете получить доступ к пользователям с именем object_list.

...