aboutsummaryrefslogtreecommitdiffstats
path: root/rest_framework/renderers.py
diff options
context:
space:
mode:
authorLudwig Kraatz2012-11-08 14:54:01 +0100
committerLudwig Kraatz2012-11-08 14:54:01 +0100
commitb4b860b45b90769833a598d01d7ccf8950a2753b (patch)
tree42f14f739eb8dbf73a215244f20dd415952d60e9 /rest_framework/renderers.py
parent066d51faa16d1cfd3c8370c6bfe46f8494bbc26a (diff)
downloaddjango-rest-framework-b4b860b45b90769833a598d01d7ccf8950a2753b.tar.bz2
moved field_mapping to be BrowsableAPIRenderer attr
from local serializer_to_form_fields var to BrowsableAPIRenderer class attr in order to - allow customization when subclassing
Diffstat (limited to 'rest_framework/renderers.py')
-rw-r--r--rest_framework/renderers.py34
1 files changed, 17 insertions, 17 deletions
diff --git a/rest_framework/renderers.py b/rest_framework/renderers.py
index 22fd6e74..2446f5b5 100644
--- a/rest_framework/renderers.py
+++ b/rest_framework/renderers.py
@@ -258,6 +258,22 @@ class BrowsableAPIRenderer(BaseRenderer):
media_type = 'text/html'
format = 'api'
template = 'rest_framework/api.html'
+ field_mapping = {
+ serializers.FloatField: forms.FloatField,
+ serializers.IntegerField: forms.IntegerField,
+ serializers.DateTimeField: forms.DateTimeField,
+ serializers.DateField: forms.DateField,
+ serializers.EmailField: forms.EmailField,
+ serializers.CharField: forms.CharField,
+ serializers.ChoiceField: forms.ChoiceField,
+ serializers.BooleanField: forms.BooleanField,
+ serializers.PrimaryKeyRelatedField: forms.ChoiceField,
+ serializers.ManyPrimaryKeyRelatedField: forms.MultipleChoiceField,
+ serializers.SlugRelatedField: forms.ChoiceField,
+ serializers.ManySlugRelatedField: forms.MultipleChoiceField,
+ serializers.HyperlinkedRelatedField: forms.ChoiceField,
+ serializers.ManyHyperlinkedRelatedField: forms.MultipleChoiceField
+ }
def get_default_renderer(self, view):
"""
@@ -306,22 +322,6 @@ class BrowsableAPIRenderer(BaseRenderer):
return True
def serializer_to_form_fields(self, serializer):
- field_mapping = {
- serializers.FloatField: forms.FloatField,
- serializers.IntegerField: forms.IntegerField,
- serializers.DateTimeField: forms.DateTimeField,
- serializers.DateField: forms.DateField,
- serializers.EmailField: forms.EmailField,
- serializers.CharField: forms.CharField,
- serializers.ChoiceField: forms.ChoiceField,
- serializers.BooleanField: forms.BooleanField,
- 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 = {}
for k, v in serializer.get_fields(True).items():
@@ -347,7 +347,7 @@ class BrowsableAPIRenderer(BaseRenderer):
kwargs['label'] = k
try:
- fields[k] = field_mapping[v.__class__](**kwargs)
+ fields[k] = self.field_mapping[v.__class__](**kwargs)
except KeyError:
if getattr(v, 'choices', None) is not None:
fields[k] = forms.ChoiceField(**kwargs)