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

Рейтинг: 0Ответов: 1Опубликовано: 02.06.2023

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

Ответы

▲ 0

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

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