@@ -128,6 +128,20 @@ def format_value(value, format_type=None):
128
128
return value
129
129
130
130
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
+
131
145
def build_json_resource_obj (fields , resource , resource_instance , resource_name ):
132
146
resource_data = [
133
147
('type' , resource_name ),
@@ -168,7 +182,7 @@ def get_related_resource_type(relation):
168
182
relation_model = parent_model_relation .field .related .model
169
183
else :
170
184
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__ ))
172
186
173
187
174
188
def extract_id_from_url (url ):
@@ -280,7 +294,7 @@ def extract_relationships(fields, resource, resource_instance):
280
294
281
295
serializer = field .child
282
296
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__ ))
284
298
285
299
# Get the serializer fields
286
300
serializer_fields = get_serializer_fields (serializer )
@@ -297,7 +311,7 @@ def extract_relationships(fields, resource, resource_instance):
297
311
298
312
if isinstance (field , ModelSerializer ):
299
313
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__ ))
301
315
302
316
# Get the serializer fields
303
317
serializer_fields = get_serializer_fields (field )
@@ -331,7 +345,7 @@ def extract_included(fields, resource, resource_instance):
331
345
332
346
serializer = field .child
333
347
model = serializer .Meta .model
334
- relation_type = inflection .pluralize (model .__name__ ). lower ( )
348
+ relation_type = inflection .pluralize (format_relation_name ( model .__name__ ))
335
349
336
350
# Get the serializer fields
337
351
serializer_fields = get_serializer_fields (serializer )
@@ -350,7 +364,7 @@ def extract_included(fields, resource, resource_instance):
350
364
if isinstance (field , ModelSerializer ):
351
365
352
366
model = field .Meta .model
353
- relation_type = inflection .pluralize (model .__name__ ). lower ( )
367
+ relation_type = inflection .pluralize (format_relation_name ( model .__name__ ))
354
368
355
369
# Get the serializer fields
356
370
serializer_fields = get_serializer_fields (field )
0 commit comments