Skip to content

Commit bde21ec

Browse files
committed
Get field name from serializer class
1 parent 7677042 commit bde21ec

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

rest_framework_json_api/views.py

+7-4
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,6 @@ class RelatedMixin(object):
106106
This mixin handles all related entities, whose Serializers are declared in "related_serializers"
107107
"""
108108
related_serializers = {}
109-
field_name_mapping = {}
110109

111110
def retrieve_related(self, request, *args, **kwargs):
112111
serializer_kwargs = {}
@@ -129,7 +128,7 @@ def retrieve_related(self, request, *args, **kwargs):
129128

130129
def get_serializer_class(self):
131130
if 'related_field' in self.kwargs:
132-
field_name = self.get_related_field_name()
131+
field_name = self.kwargs['related_field']
133132
class_str = self.related_serializers.get(field_name, None)
134133
if class_str is None:
135134
raise NotFound
@@ -138,8 +137,12 @@ def get_serializer_class(self):
138137

139138
def get_related_field_name(self):
140139
field_name = self.kwargs['related_field']
141-
if field_name in self.field_name_mapping:
142-
return self.field_name_mapping[field_name]
140+
# Making sure we're getting correct model field/property/method name
141+
try:
142+
return super(RelatedMixin, self).get_serializer_class()().fields[field_name].source
143+
except KeyError:
144+
# Looks like the field was not declared on the serializer
145+
pass
143146
return field_name
144147

145148
def get_related_instance(self):

0 commit comments

Comments
 (0)