Использование доступа в Django используя is_staff is_superuser

Всем привет не могу разобраться. Хочу запретить во view в частности CreateView создавать записи пользователям, если у него не стоят галочки is_staff или is_superuser. Подскажите как это правильно сделать? Использую классы generic.


Ответы (1 шт):

Автор решения: gef3dx

Тема закрыта всем спасибо!

Классы 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
→ Ссылка