diff options
| author | Tom Christie | 2013-08-28 21:52:56 +0100 | 
|---|---|---|
| committer | Tom Christie | 2013-08-28 21:52:56 +0100 | 
| commit | 18007d68464b0cfab970e2a60aed0d41c4de4dac (patch) | |
| tree | 7964747ece4cebc71f1bd73be81a38dbd42408e4 /rest_framework/renderers.py | |
| parent | 8d590ebfded0968e458f8e3a87efabec8384586e (diff) | |
| download | django-rest-framework-18007d68464b0cfab970e2a60aed0d41c4de4dac.tar.bz2 | |
Simplifying raw data renderering support
Diffstat (limited to 'rest_framework/renderers.py')
| -rw-r--r-- | rest_framework/renderers.py | 10 | 
1 files changed, 8 insertions, 2 deletions
| diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index cc8de959..cd55c783 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -21,7 +21,7 @@ from rest_framework.compat import six  from rest_framework.compat import smart_text  from rest_framework.compat import yaml  from rest_framework.settings import api_settings -from rest_framework.request import clone_request +from rest_framework.request import clone_request, is_form_media_type  from rest_framework.utils import encoders  from rest_framework.utils.breadcrumbs import get_breadcrumbs  from rest_framework import exceptions, status, VERSION @@ -482,7 +482,7 @@ class BrowsableAPIRenderer(BaseRenderer):          if method in ('DELETE', 'OPTIONS'):              return True  # Don't actually need to return a form -        if not getattr(view, 'get_serializer', None) or not any(parser.supports_html_forms for parser in view.parser_classes): +        if not getattr(view, 'get_serializer', None) or not any(is_form_media_type(parser.media_type) for parser in view.parser_classes):              return          serializer = view.get_serializer(instance=obj) @@ -565,11 +565,16 @@ class BrowsableAPIRenderer(BaseRenderer):          obj = getattr(view, 'object', None)          if getattr(view, 'get_serializer', None):              serializer = view.get_serializer(instance=obj) +            for field_name, field in serializer.fields.items(): +                if field.read_only: +                    del serializer.fields[field_name]          else:              serializer = None          parsers = []          for parser_class in view.parser_classes: +            if is_form_media_type(parser_class.media_type): +                continue              content = None              renderer_class = getattr(parser_class, 'renderer_class', None)              if renderer_class and serializer: @@ -650,3 +655,4 @@ class MultiPartRenderer(BaseRenderer):      def render(self, data, accepted_media_type=None, renderer_context=None):          return encode_multipart(self.BOUNDARY, data) + | 
