5
You can rewrite retrieve
method in your view in order to update your serializer response data
class FooRetrieveAPIView(RetrieveAPIView):
queryset = Foo.objects.all()
serializer_class = FooSerializer
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
serializer = self.get_serializer(instance)
data = serializer.data
# here you can manipulate your data response
return Response(data)
2
I had a similar problem and didn’t want to create a custom exception handler as I wanted more control over defining error messages for api calls.
After a bit of hand banging I used the following code in viewset to get custom error message while updating the record using partial_update.
def partial_update(self, request, *args, **kwargs):
partial = kwargs.pop('partial', False)
try:
instance = self.get_object()
serializer = self.get_serializer(instance, data=request.data, partial=partial)
serializer.is_valid(raise_exception=True)
self.perform_update(serializer)
headers = self.get_success_headers(serializer.data)
response = {"status": "True", "message": "", "data": serializer.data}
return Response(response, status=status.HTTP_201_CREATED, headers=headers)
except exception.Http404:
headers = ""
response = {"status": "False", "message": "Details not found", "data": ""}
return Response(response, status=status.HTTP_200_OK, headers=headers)
- [Django]-Python Django getattr(): attribute name must be string
- [Django]-Can I serve one django app from 2 different apache vhosts?
- [Django]-How to run Daphne and Gunicorn At The Same Time?
- [Django]-Django annotate on boolean Field
- [Django]-Serializer return incorrect output
Source:stackexchange.com