@@ -128,6 +128,21 @@ 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
+
143
+ return inflection .pluralize (value )
144
+
145
+
131
146
def build_json_resource_obj (fields , resource , resource_instance , resource_name ):
132
147
resource_data = [
133
148
('type' , resource_name ),
@@ -168,7 +183,7 @@ def get_related_resource_type(relation):
168
183
relation_model = parent_model_relation .field .related .model
169
184
else :
170
185
raise APIException ('Unable to find related model for relation {relation}' .format (relation = relation ))
171
- return inflection . pluralize (relation_model .__name__ ). lower ( )
186
+ return format_relation_name (relation_model .__name__ )
172
187
173
188
174
189
def extract_id_from_url (url ):
@@ -280,7 +295,7 @@ def extract_relationships(fields, resource, resource_instance):
280
295
281
296
serializer = field .child
282
297
relation_model = serializer .Meta .model
283
- relation_type = inflection . pluralize (relation_model .__name__ ). lower ( )
298
+ relation_type = format_relation_name (relation_model .__name__ )
284
299
285
300
# Get the serializer fields
286
301
serializer_fields = get_serializer_fields (serializer )
@@ -297,7 +312,7 @@ def extract_relationships(fields, resource, resource_instance):
297
312
298
313
if isinstance (field , ModelSerializer ):
299
314
relation_model = field .Meta .model
300
- relation_type = inflection . pluralize (relation_model .__name__ ). lower ( )
315
+ relation_type = format_relation_name (relation_model .__name__ )
301
316
302
317
# Get the serializer fields
303
318
serializer_fields = get_serializer_fields (field )
@@ -331,7 +346,7 @@ def extract_included(fields, resource, resource_instance):
331
346
332
347
serializer = field .child
333
348
model = serializer .Meta .model
334
- relation_type = inflection . pluralize (model .__name__ ). lower ( )
349
+ relation_type = format_relation_name (model .__name__ )
335
350
336
351
# Get the serializer fields
337
352
serializer_fields = get_serializer_fields (serializer )
@@ -350,7 +365,7 @@ def extract_included(fields, resource, resource_instance):
350
365
if isinstance (field , ModelSerializer ):
351
366
352
367
model = field .Meta .model
353
- relation_type = inflection . pluralize (model .__name__ ). lower ( )
368
+ relation_type = format_relation_name (model .__name__ )
354
369
355
370
# Get the serializer fields
356
371
serializer_fields = get_serializer_fields (field )
0 commit comments