From 041435f4eeee80fbc805154977140cf42335c954 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Fri, 7 Nov 2014 14:08:20 +0000 Subject: Prevent re-running deserialization. Closes #1975. --- rest_framework/renderers.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'rest_framework/renderers.py') diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index c950b498..87fe4d29 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -523,8 +523,10 @@ class BrowsableAPIRenderer(BaseRenderer): data = request.data except ParseError: data = None + existing_serializer = serializer else: data = None + existing_serializer = None with override_method(view, request, method) as request: if not self.show_form_for_method(view, method, request, instance): @@ -539,9 +541,12 @@ class BrowsableAPIRenderer(BaseRenderer): ): return - serializer = view.get_serializer(instance=instance, data=data) - if data is not None: - serializer.is_valid() + if existing_serializer is not None: + serializer = existing_serializer + else: + serializer = view.get_serializer(instance=instance, data=data) + if data is not None: + serializer.is_valid() form_renderer = self.form_renderer_class() return form_renderer.render(serializer.data, self.accepted_media_type, self.renderer_context) -- cgit v1.2.3