mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-02-17 03:51:03 +03:00
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
This commit is contained in:
parent
066d51faa1
commit
b4b860b45b
|
@ -258,6 +258,22 @@ class BrowsableAPIRenderer(BaseRenderer):
|
||||||
media_type = 'text/html'
|
media_type = 'text/html'
|
||||||
format = 'api'
|
format = 'api'
|
||||||
template = 'rest_framework/api.html'
|
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):
|
def get_default_renderer(self, view):
|
||||||
"""
|
"""
|
||||||
|
@ -306,22 +322,6 @@ class BrowsableAPIRenderer(BaseRenderer):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def serializer_to_form_fields(self, serializer):
|
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 = {}
|
fields = {}
|
||||||
for k, v in serializer.get_fields(True).items():
|
for k, v in serializer.get_fields(True).items():
|
||||||
|
@ -347,7 +347,7 @@ class BrowsableAPIRenderer(BaseRenderer):
|
||||||
kwargs['label'] = k
|
kwargs['label'] = k
|
||||||
|
|
||||||
try:
|
try:
|
||||||
fields[k] = field_mapping[v.__class__](**kwargs)
|
fields[k] = self.field_mapping[v.__class__](**kwargs)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
if getattr(v, 'choices', None) is not None:
|
if getattr(v, 'choices', None) is not None:
|
||||||
fields[k] = forms.ChoiceField(**kwargs)
|
fields[k] = forms.ChoiceField(**kwargs)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user