aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/renderers.py
diff options
context:
space:
mode:
authorTom Christie2012-11-01 23:04:13 +0000
committerTom Christie2012-11-01 23:04:13 +0000
commitd327c5f531b341ad980d20454211b02b87f34d0e (patch)
treea12f9fd53c73f7e9b4dd06785e3d357259e0a678 /rest_framework/renderers.py
parent027c9079f62322fe933bdfd4438f23cf4848e3cc (diff)
downloaddjango-rest-framework-d327c5f531b341ad980d20454211b02b87f34d0e.tar.bz2
Relational field support in browseable API.
Add slug relational fields. Add quickstart.
Diffstat (limited to 'rest_framework/renderers.py')
-rw-r--r--rest_framework/renderers.py25
1 files changed, 11 insertions, 14 deletions
diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py
index 8dff0c77..63578b14 100644
--- a/rest_framework/renderers.py
+++ b/rest_framework/renderers.py
@@ -282,10 +282,12 @@ class BrowsableAPIRenderer(BaseRenderer):
serializers.EmailField: forms.EmailField,
serializers.CharField: forms.CharField,
serializers.BooleanField: forms.BooleanField,
- serializers.PrimaryKeyRelatedField: forms.ModelChoiceField,
- serializers.ManyPrimaryKeyRelatedField: forms.ModelMultipleChoiceField,
- serializers.HyperlinkedRelatedField: forms.ModelChoiceField,
- serializers.ManyHyperlinkedRelatedField: forms.ModelMultipleChoiceField
+ serializers.PrimaryKeyRelatedField: forms.ChoiceField,
+ serializers.ManyPrimaryKeyRelatedField: forms.MultipleChoiceField,
+ serializers.SlugRelatedField: forms.ChoiceField,
+ serializers.ManySlugRelatedField: forms.MultipleChoiceField,
+ serializers.HyperlinkedRelatedField: forms.ChoiceField,
+ serializers.ManyHyperlinkedRelatedField: forms.MultipleChoiceField
}
fields = {}
@@ -296,19 +298,14 @@ class BrowsableAPIRenderer(BaseRenderer):
kwargs = {}
kwargs['required'] = v.required
- if getattr(v, 'queryset', None):
- kwargs['queryset'] = v.queryset
+ #if getattr(v, 'queryset', None):
+ # kwargs['queryset'] = v.queryset
+
+ if getattr(v, 'choices', None) is not None:
+ kwargs['choices'] = v.choices
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: