ListAPIView 中自定义分页的验证错误

ValidationError with Custom pagination in ListAPIView

我正在尝试在我的 ListAPiview 中设置错误消息,如果用户尝试访问 Pool Operator 以外的数据,他应该得到权限被拒绝的错误

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"}
            )

但是当我 运行 这样做时,我得到以下错误:

object of type 'ValidationError' has no len()

需要更改什么才能显示成功的错误消息?

您需要使用 raise 而不是 return。

因此,代码将是

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

您还可以在 Django 设置中使用自定义异常处理程序。