From 3e878a3207ba79785d41b4d6af5cd956156d45a3 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Fri, 7 Nov 2014 15:38:27 +0000 Subject: [PATCH] Fix initial data on serializers to reflect writable fields --- rest_framework/renderers.py | 5 ----- rest_framework/serializers.py | 3 ++- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index 87fe4d29f..b56f99db9 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -581,12 +581,7 @@ class BrowsableAPIRenderer(BaseRenderer): # View has a serializer defined and parser class has a # corresponding renderer that can be used to render the data. - # Get a read-only version of the serializer serializer = view.get_serializer(instance=instance) - if instance is None: - for name, field in serializer.fields.items(): - if getattr(field, 'read_only', None): - del serializer.fields[name] # Render the raw data content renderer = renderer_class() diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 833a4e486..d83367f40 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -234,12 +234,13 @@ class Serializer(BaseSerializer): (field_name, field.get_value(self._initial_data)) for field_name, field in self.fields.items() if field.get_value(self._initial_data) is not empty + and not field.read_only ], serializer=self) return ReturnDict([ (field.field_name, field.get_initial()) for field in self.fields.values() - if not field.write_only + if not field.read_only ], serializer=self) def get_value(self, dictionary):