我正在使用分页,但是没有醒来。我已经使用过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
答案 0 :(得分:1)
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
的用户。