@@ -50,7 +50,7 @@ def get_resource_name(context):
5050 return get_resource_type_from_serializer (serializer )
5151 except AttributeError :
5252 try :
53- resource_name = view .model . __name__
53+ resource_name = get_resource_type_from_model ( view .model )
5454 except AttributeError :
5555 resource_name = view .__class__ .__name__
5656
@@ -182,7 +182,7 @@ def get_related_resource_type(relation):
182182 relation_model = parent_model_relation .field .related .model
183183 else :
184184 return get_related_resource_type (parent_model_relation )
185- return format_relation_name (relation_model . __name__ )
185+ return get_resource_type_from_model (relation_model )
186186
187187
188188def get_instance_or_manager_resource_type (resource_instance_or_manager ):
@@ -193,25 +193,31 @@ def get_instance_or_manager_resource_type(resource_instance_or_manager):
193193 pass
194194
195195
196+ def get_resource_type_from_model (model ):
197+ json_api_meta = getattr (model , 'JSONAPIMeta' , None )
198+ return getattr (
199+ json_api_meta ,
200+ 'resource_name' ,
201+ format_relation_name (model .__name__ ))
202+
203+
196204def get_resource_type_from_queryset (qs ):
197- return format_relation_name (qs .model . _meta . model . __name__ )
205+ return get_resource_type_from_model (qs .model )
198206
199207
200208def get_resource_type_from_instance (instance ):
201- return format_relation_name (instance ._meta .model . __name__ )
209+ return get_resource_type_from_model (instance ._meta .model )
202210
203211
204212def get_resource_type_from_manager (manager ):
205- return format_relation_name (manager .model . __name__ )
213+ return get_resource_type_from_model (manager .model )
206214
207215
208216def get_resource_type_from_serializer (serializer ):
209- try :
210- # Check the meta class for resource_name
211- return serializer .Meta .resource_name
212- except AttributeError :
213- # Use the serializer model then pluralize and format
214- return format_relation_name (serializer .Meta .model .__name__ )
217+ return getattr (
218+ serializer .Meta ,
219+ 'resource_name' ,
220+ get_resource_type_from_model (serializer .Meta .model ))
215221
216222
217223def get_included_serializers (serializer ):
0 commit comments