I want to limit the queryset returned by a ListAPIView, using the filtering technique described here.
The question is, how do I handle invalid parameters? Raising a ValidationError only works for serializers, not within the ViewSet. I'd like to let the user know that the request was invalid, rather than failing silently.
For example:
class PurchaseList(generics.ListAPIView):
serializer_class = PurchaseSerializer
def get_queryset(self):
queryset = Purchase.objects.all()
username = self.request.query_params.get('username', None)
if username is not None:
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
# How do I handle this invalid parameter?
else:
queryset = queryset.filter(purchaser=user)
return queryset