mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-07-23 06:29:58 +03:00
Merge e9dfebc9c6
into 066d51faa1
This commit is contained in:
commit
6836a8dcc3
|
@ -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)
|
||||
|
|
|
@ -480,6 +480,7 @@ class HyperlinkedModelSerializer(ModelSerializer):
|
|||
"""
|
||||
_options_class = HyperlinkedModelSerializerOptions
|
||||
_default_view_name = '%(model_name)s-detail'
|
||||
_default_view_namespace = None # default: no namespace is prepend to view_name
|
||||
|
||||
url = HyperlinkedIdentityField()
|
||||
|
||||
|
@ -497,7 +498,14 @@ class HyperlinkedModelSerializer(ModelSerializer):
|
|||
'app_label': model_meta.app_label,
|
||||
'model_name': model_meta.object_name.lower()
|
||||
}
|
||||
return self._default_view_name % format_kwargs
|
||||
view_name = self._default_view_name % format_kwargs
|
||||
if self._default_view_namespace:
|
||||
return "%(namespace)s:%(view)s" % {
|
||||
'view': view_name,
|
||||
'namespace': self._default_view_namespace
|
||||
}
|
||||
else:
|
||||
return view_name
|
||||
|
||||
def get_pk_field(self, model_field):
|
||||
return None
|
||||
|
|
Loading…
Reference in New Issue
Block a user