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 设置中使用自定义异常处理程序。
我正在尝试在我的 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 设置中使用自定义异常处理程序。