diff options
| author | Tom Christie | 2014-11-07 14:08:20 +0000 |
|---|---|---|
| committer | Tom Christie | 2014-11-07 14:08:20 +0000 |
| commit | 041435f4eeee80fbc805154977140cf42335c954 (patch) | |
| tree | 49ffe90e714f3cdadcfc6275a1f19b9e9a4fc636 | |
| parent | bb21216a7c7f3435ece44462beb24275bb44551a (diff) | |
| download | django-rest-framework-041435f4eeee80fbc805154977140cf42335c954.tar.bz2 | |
Prevent re-running deserialization. Closes #1975.
| -rw-r--r-- | rest_framework/renderers.py | 11 |
1 files changed, 8 insertions, 3 deletions
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) |
