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.