diff options
| author | Tom Christie | 2013-08-30 09:02:54 +0100 |
|---|---|---|
| committer | Tom Christie | 2013-08-30 09:02:54 +0100 |
| commit | 3fba60e99c75dda4e14f7fe4f941d6fc84e4c986 (patch) | |
| tree | 62c33389ebb77a71b931ad72d702ba0096fe00fa | |
| parent | 2247fd68e9b3bbc91075a11f44db16fc40497b2a (diff) | |
| download | django-rest-framework-3fba60e99c75dda4e14f7fe4f941d6fc84e4c986.tar.bz2 | |
Drop broken placeholder serializations.
| -rw-r--r-- | rest_framework/renderers.py | 13 | ||||
| -rw-r--r-- | rest_framework/serializers.py | 3 | ||||
| -rw-r--r-- | rest_framework/tests/test_serializer.py | 1 |
3 files changed, 12 insertions, 5 deletions
diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index 525e44d5..fca67eee 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -338,6 +338,11 @@ class HTMLFormRenderer(BaseRenderer): fields = {} for key, val in data.fields.items(): if getattr(val, 'read_only', True): + # Don't include read-only fields. + continue + + if getattr(val, 'fields', None): + # Nested data not supported by HTML forms. continue kwargs = {} @@ -476,6 +481,7 @@ class BrowsableAPIRenderer(BaseRenderer): return serializer = view.get_serializer(instance=obj) + data = serializer.data form_renderer = self.form_renderer_class() return form_renderer.render(data, self.accepted_media_type, self.renderer_context) @@ -508,9 +514,10 @@ class BrowsableAPIRenderer(BaseRenderer): # Get a read-only version of the serializer serializer = view.get_serializer(instance=obj) - for field_name, field in serializer.fields.items(): - if field.read_only: - del serializer.fields[field_name] + if obj 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 abff6898..a63c7f6c 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -334,13 +334,14 @@ class BaseSerializer(WritableField): if self.source == '*': return self.to_native(obj) + # Get the raw field value try: source = self.source or field_name value = obj for component in source.split('.'): if value is None: - return self.to_native(None) + break value = get_component(value, component) except ObjectDoesNotExist: return None diff --git a/rest_framework/tests/test_serializer.py b/rest_framework/tests/test_serializer.py index c2497660..957e3bd2 100644 --- a/rest_framework/tests/test_serializer.py +++ b/rest_framework/tests/test_serializer.py @@ -158,7 +158,6 @@ class BasicTests(TestCase): 'email': '', 'content': '', 'created': None, - 'sub_comment': '' } self.assertEqual(serializer.data, expected) |
