Skip to content

Commit 0119b02

Browse files
committed
A compound document MUST NOT include more than one resource object for each type and id pair
1 parent d05dd28 commit 0119b02

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

rest_framework_json_api/renderers.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,17 @@ def render(self, data, accepted_media_type=None, renderer_context=None):
8888
render_data['data'] = json_api_data
8989

9090
if len(json_api_included) > 0:
91+
# Iterate through compound documents to remove duplicates
92+
seen = set()
93+
unique_compound_documents = list()
94+
for included_dict in json_api_included:
95+
type_tuple = tuple((included_dict['type'], included_dict['id']))
96+
if type_tuple not in seen:
97+
seen.add(type_tuple)
98+
unique_compound_documents.append(included_dict)
99+
91100
# Sort the items by type then by id
92-
render_data['included'] = sorted(json_api_included, key=lambda item: (item['type'], item['id']))
101+
render_data['included'] = sorted(unique_compound_documents, key=lambda item: (item['type'], item['id']))
93102

94103
if data.get('meta'):
95104
render_data['meta'] = data.get('meta')

0 commit comments

Comments
 (0)