@@ -128,6 +128,20 @@ def format_value(value, format_type=None):
128128 return value
129129
130130
131+ def format_relation_name (value , format_type = None ):
132+ format_type = getattr (settings , 'JSON_API_FORMAT_RELATION_KEYS' , False )
133+
134+ value = inflection .underscore (value )
135+
136+ if format_type == 'dasherize' :
137+ value = inflection .dasherize (value )
138+ elif format_type == 'camelize' :
139+ value = inflection .camelize (value )
140+ elif format_type == 'underscore' :
141+ value = inflection .underscore (value )
142+ return value
143+
144+
131145def build_json_resource_obj (fields , resource , resource_instance , resource_name ):
132146 resource_data = [
133147 ('type' , resource_name ),
@@ -168,7 +182,7 @@ def get_related_resource_type(relation):
168182 relation_model = parent_model_relation .field .related .model
169183 else :
170184 raise APIException ('Unable to find related model for relation {relation}' .format (relation = relation ))
171- return inflection .pluralize (relation_model .__name__ ). lower ( )
185+ return inflection .pluralize (format_relation_name ( relation_model .__name__ ))
172186
173187
174188def extract_id_from_url (url ):
@@ -280,7 +294,7 @@ def extract_relationships(fields, resource, resource_instance):
280294
281295 serializer = field .child
282296 relation_model = serializer .Meta .model
283- relation_type = inflection .pluralize (relation_model .__name__ ). lower ( )
297+ relation_type = inflection .pluralize (format_relation_name ( relation_model .__name__ ))
284298
285299 # Get the serializer fields
286300 serializer_fields = get_serializer_fields (serializer )
@@ -297,7 +311,7 @@ def extract_relationships(fields, resource, resource_instance):
297311
298312 if isinstance (field , ModelSerializer ):
299313 relation_model = field .Meta .model
300- relation_type = inflection .pluralize (relation_model .__name__ ). lower ( )
314+ relation_type = inflection .pluralize (format_relation_name ( relation_model .__name__ ))
301315
302316 # Get the serializer fields
303317 serializer_fields = get_serializer_fields (field )
@@ -331,7 +345,7 @@ def extract_included(fields, resource, resource_instance):
331345
332346 serializer = field .child
333347 model = serializer .Meta .model
334- relation_type = inflection .pluralize (model .__name__ ). lower ( )
348+ relation_type = inflection .pluralize (format_relation_name ( model .__name__ ))
335349
336350 # Get the serializer fields
337351 serializer_fields = get_serializer_fields (serializer )
@@ -350,7 +364,7 @@ def extract_included(fields, resource, resource_instance):
350364 if isinstance (field , ModelSerializer ):
351365
352366 model = field .Meta .model
353- relation_type = inflection .pluralize (model .__name__ ). lower ( )
367+ relation_type = inflection .pluralize (format_relation_name ( model .__name__ ))
354368
355369 # Get the serializer fields
356370 serializer_fields = get_serializer_fields (field )
0 commit comments