diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 1dd666a3c..969800b00 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -547,7 +547,7 @@ class HyperlinkedRelatedField(RelatedField): return self.slug_field def to_native(self, obj): - view_namespace = self.view_namespace or getattr(self.parent.opts, 'view_namespace', None) + view_namespace = self.view_namespace view_name = self.view_name if view_namespace: view_name = '%(namespace)s:%(name)s' % {'namespace': view_namespace, 'name': view_name} @@ -659,7 +659,7 @@ class HyperlinkedIdentityField(Field): def field_to_native(self, obj, field_name): request = self.context.get('request', None) format = self.format or self.context.get('format', None) - view_namespace = self.view_namespace or getattr(self.parent.opts, 'view_namespace', None) + view_namespace = self.view_namespace view_name = self.view_name if view_namespace: view_name = '%(namespace)s:%(name)s' % {'namespace': view_namespace, 'name': view_name} diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index a15b4ef67..b14ce477b 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -560,7 +560,9 @@ class HyperlinkedModelSerializer(ModelSerializer): queryset = rel._default_manager kwargs = { 'queryset': queryset, - 'view_name': self._get_default_view_name(rel) + 'view_name': self._get_default_view_name(rel), + # TODO? offer possibility to init related fields with custom namespaces + 'view_namespace': getattr(self.opts, 'view_namespace', None) } if to_many: return ManyHyperlinkedRelatedField(**kwargs)