aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/renderers.py
diff options
context:
space:
mode:
authorMarko Tibold2012-10-22 20:09:36 +0200
committerMarko Tibold2012-10-22 20:09:36 +0200
commitd1e05ea8d4b5d7f94bde9a574196505aa823a6ff (patch)
treecf155b8a239644243d8198c69ec15070627b4ed8 /rest_framework/renderers.py
parentab1a12bfecf49061cb31dff05add26d96078771e (diff)
parent95a670de41a246777bc1e448dca8cc576b7b86ea (diff)
downloaddjango-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.py24
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):