@@ -50,7 +50,7 @@ def get_resource_name(context):
50
50
return get_resource_type_from_serializer (serializer )
51
51
except AttributeError :
52
52
try :
53
- resource_name = view .model . __name__
53
+ resource_name = get_resource_type_from_model ( view .model )
54
54
except AttributeError :
55
55
resource_name = view .__class__ .__name__
56
56
@@ -171,7 +171,7 @@ def get_related_resource_type(relation):
171
171
relation_model = parent_model_relation .field .related .model
172
172
else :
173
173
return get_related_resource_type (parent_model_relation )
174
- return format_relation_name (relation_model . __name__ )
174
+ return get_resource_type_from_model (relation_model )
175
175
176
176
177
177
def get_instance_or_manager_resource_type (resource_instance_or_manager ):
@@ -182,25 +182,31 @@ def get_instance_or_manager_resource_type(resource_instance_or_manager):
182
182
pass
183
183
184
184
185
+ def get_resource_type_from_model (model ):
186
+ json_api_meta = getattr (model , 'JSONAPIMeta' , None )
187
+ return getattr (
188
+ json_api_meta ,
189
+ 'resource_name' ,
190
+ format_relation_name (model .__name__ ))
191
+
192
+
185
193
def get_resource_type_from_queryset (qs ):
186
- return format_relation_name (qs .model . _meta . model . __name__ )
194
+ return get_resource_type_from_model (qs .model )
187
195
188
196
189
197
def get_resource_type_from_instance (instance ):
190
- return format_relation_name (instance ._meta .model . __name__ )
198
+ return get_resource_type_from_model (instance ._meta .model )
191
199
192
200
193
201
def get_resource_type_from_manager (manager ):
194
- return format_relation_name (manager .model . __name__ )
202
+ return get_resource_type_from_model (manager .model )
195
203
196
204
197
205
def get_resource_type_from_serializer (serializer ):
198
- try :
199
- # Check the meta class for resource_name
200
- return serializer .Meta .resource_name
201
- except AttributeError :
202
- # Use the serializer model then pluralize and format
203
- return format_relation_name (serializer .Meta .model .__name__ )
206
+ return getattr (
207
+ serializer .Meta ,
208
+ 'resource_name' ,
209
+ get_resource_type_from_model (serializer .Meta .model ))
204
210
205
211
206
212
def get_included_serializers (serializer ):
0 commit comments