Fix up widget choices

This commit is contained in:
Tom Christie 2012-10-19 09:47:01 +01:00
parent dab177e29e
commit a7390fe704

View File

@ -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)