ValidationError при использовании пользовательской пагинации в ListAPIView

Я пытаюсь установить сообщение об ошибке в моем ListAPiview, где если пользователь пытается получить доступ к данным, отличным от Pool Operator, он должен получить ошибку Permisiion Denied

Views.py

class ProductListAPIView(generics.ListAPIView):
    serializer_class = ProductSerializer
    pagination_class = StandardResultsSetPagination
    permission_classes = (permissions.IsAuthenticated, )

    def get_queryset(self):
        company = self.request.GET['company']
        view = self.request.GET['view']
        if view=='Pool Operator':
            emp = list(Employee.objects.filter(company=company).values_list('pk', flat=True))
            queryset = Product.objects.filter(owner__in=emp).order_by('-pk')
            return queryset
        else:
            return ValidationError(
                {'permission denied': "Can't see user's Products"}
            )

Но когда я запускаю это, я получаю следующую ошибку:

объект типа 'ValidationError' не имеет len()

Что нужно изменить, чтобы показать сообщение об успешной ошибке?

Вам нужно использовать raise вместо return.

Итак, код будет

raise ValidationError(
                {'permission denied': "Can't see user's Products"}
            )

Вы также можете использовать пользовательский обработчик исключений в настройках django.

Вернуться на верх