aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/renderers.py
diff options
context:
space:
mode:
authorTom Christie2012-10-19 09:47:01 +0100
committerTom Christie2012-10-19 09:47:01 +0100
commita7390fe7044c4f10d15fdbe9de9e594d0ffa2e05 (patch)
tree880b093a9eae36005e08bfd12f67e33372131fc5 /rest_framework/renderers.py
parentdab177e29e45b657bb43705979c8e601d5a1b31b (diff)
downloaddjango-rest-framework-a7390fe7044c4f10d15fdbe9de9e594d0ffa2e05.tar.bz2
Fix up widget choices
Diffstat (limited to 'rest_framework/renderers.py')
-rw-r--r--rest_framework/renderers.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py
index de2276ad..ba5489bc 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
@@ -283,11 +284,19 @@ class BrowsableAPIRenderer(BaseRenderer):
if getattr(v, 'queryset', None):
kwargs['queryset'] = v.queryset
if getattr(v, 'widget', None):
- kwargs['widget'] = v.widget
+ 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, 'initial', None):
kwargs['initial'] = v.initial
kwargs['label'] = k
- print kwargs
try:
fields[k] = field_mapping[v.__class__](**kwargs)