Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 3aff5d2

Browse files
use an included serializer's resource_name even when not included
1 parent eace45c commit 3aff5d2

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

‎rest_framework_json_api/relations.py‎

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66

77
from rest_framework_json_api.exceptions import Conflict
88
from rest_framework_json_api.utils import Hyperlink, \
9-
get_resource_type_from_queryset, get_resource_type_from_instance
9+
get_resource_type_from_queryset, get_resource_type_from_instance, \
10+
get_included_serializers, get_resource_type_from_serializer
1011

1112

1213
class ResourceRelatedField(PrimaryKeyRelatedField):
@@ -137,7 +138,18 @@ def to_representation(self, value):
137138
else:
138139
pk = value.pk
139140

140-
return OrderedDict([('type', get_resource_type_from_instance(value)), ('id', str(pk))])
141+
# check to see if this resource has a different resource_name when
142+
# included and use that name
143+
resource_type = None
144+
root = getattr(self.parent, 'parent', self.parent)
145+
field_name = self.field_name if self.field_name else self.parent.field_name
146+
if getattr(root, 'included_serializers', None) is not None:
147+
includes = get_included_serializers(root)
148+
if field_name in includes.keys():
149+
resource_type = get_resource_type_from_serializer(includes[field_name])
150+
151+
resource_type = resource_type if resource_type else get_resource_type_from_instance(value)
152+
return OrderedDict([('type', resource_type), ('id', str(pk))])
141153

142154
@property
143155
def choices(self):

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /