diff options
| author | Marko Tibold | 2012-10-22 20:09:36 +0200 | 
|---|---|---|
| committer | Marko Tibold | 2012-10-22 20:09:36 +0200 | 
| commit | d1e05ea8d4b5d7f94bde9a574196505aa823a6ff (patch) | |
| tree | cf155b8a239644243d8198c69ec15070627b4ed8 /rest_framework/renderers.py | |
| parent | ab1a12bfecf49061cb31dff05add26d96078771e (diff) | |
| parent | 95a670de41a246777bc1e448dca8cc576b7b86ea (diff) | |
| download | django-rest-framework-d1e05ea8d4b5d7f94bde9a574196505aa823a6ff.tar.bz2 | |
Merge commit '95a670de41a246777bc1e448dca8cc576b7b86ea' into BrowsableAPIRenderer
Conflicts:
	rest_framework/renderers.py - manually resolved conflict
Diffstat (limited to 'rest_framework/renderers.py')
| -rw-r--r-- | rest_framework/renderers.py | 24 | 
1 files changed, 22 insertions, 2 deletions
diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py index 43175861..c64fb517 100644 --- a/rest_framework/renderers.py +++ b/rest_framework/renderers.py @@ -6,6 +6,7 @@ on the response, such as JSON encoded data or HTML output.  REST framework also provides an HTML renderer the renders the browseable API.  """ +import copy  import string  from django import forms  from django.http.multipartparser import parse_header @@ -260,13 +261,32 @@ class BrowsableAPIRenderer(BaseRenderer):                  continue              kwargs = {} +            kwargs['required'] = v.required +              if getattr(v, 'queryset', None): -                kwargs['queryset'] = getattr(v, 'queryset', None) +                kwargs['queryset'] = v.queryset + +            if getattr(v, 'widget', None): +                widget = copy.deepcopy(v.widget) +                # If choices have friendly readable names, +                # then add in the identities too +                if getattr(widget, 'choices', None): +                    choices = widget.choices +                    if any([ident != desc for (ident, desc) in choices]): +                        choices = [(ident, "%s (%s)" % (desc, ident)) +                                   for (ident, desc) in choices] +                    widget.choices = choices +                kwargs['widget'] = widget + +            if getattr(v, 'default', None) is not None: +                kwargs['initial'] = v.default + +            kwargs['label'] = k              try:                  fields[k] = field_mapping[v.__class__](**kwargs)              except KeyError: -                fields[k] = forms.CharField() +                fields[k] = forms.CharField(**kwargs)          return fields      def get_form(self, view, method, request):  | 
