Allow serializer kwargs to be customized

This modifies the base generic view to call `get_serializer_kwargs`,
allowing custom kwargs to be passed into the serializer without
requiring that the entire `get_serializer` method is overridden.
This commit is contained in:
Kevin Brown 2014-01-12 14:42:42 -05:00
parent b61cef435e
commit 293d195011

View File

@ -90,6 +90,11 @@ class GenericAPIView(views.APIView):
'view': self 'view': self
} }
def get_serializer_kwargs(self, **kwargs):
kwargs["context"] = self.get_serializer_context()
return kwargs
def get_serializer(self, instance=None, data=None, def get_serializer(self, instance=None, data=None,
files=None, many=False, partial=False): files=None, many=False, partial=False):
""" """
@ -97,9 +102,18 @@ class GenericAPIView(views.APIView):
deserializing input, and for serializing output. deserializing input, and for serializing output.
""" """
serializer_class = self.get_serializer_class() serializer_class = self.get_serializer_class()
context = self.get_serializer_context()
return serializer_class(instance, data=data, files=files, kwargs_dict = {
many=many, partial=partial, context=context) "instance": instance,
"data": data,
"files": files,
"many": many,
"partial": partial,
}
kwargs = self.get_serializer_kwargs(**kwargs_dict)
return serializer_class(**kwargs)
def get_pagination_serializer(self, page): def get_pagination_serializer(self, page):
""" """