Тема закрыта всем спасибо!
Классы generic наследуются от BaseUpdateView в котором есть как и в классе View методы get и post то есть их можно переопределить.
class UserViewList(LoginRequiredMixin, ListView):
template_name = 'userlist.html'
model = CustomUser
paginate_by = 15
context_object_name = 'users'
def get(self, request, *args, **kwargs):
if self.request.user.is_staff:
self.object = None
return super().get(request, *args, **kwargs)
else:
return redirect('home')
def post(self, request, *args, **kwargs):
if self.request.user.is_staff:
self.object = None
return super().post(request, *args, **kwargs)
else:
return redirect('home')
def get_queryset(self, **kwargs):
queryset = CustomUser.objects.all()
return queryset