diff options
| author | Tom Christie | 2012-10-19 09:47:01 +0100 |
|---|---|---|
| committer | Tom Christie | 2012-10-19 09:47:01 +0100 |
| commit | a7390fe7044c4f10d15fdbe9de9e594d0ffa2e05 (patch) | |
| tree | 880b093a9eae36005e08bfd12f67e33372131fc5 /rest_framework/renderers.py | |
| parent | dab177e29e45b657bb43705979c8e601d5a1b31b (diff) | |
| download | django-rest-framework-a7390fe7044c4f10d15fdbe9de9e594d0ffa2e05.tar.bz2 | |
Fix up widget choices
Diffstat (limited to 'rest_framework/renderers.py')
| -rw-r--r-- | rest_framework/renderers.py | 13 |
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) |
