Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ any parts of the framework not mentioned in the documentation should generally b
return value.name
```

* `SerializerMethodResourceRelatedField(many=True)` relationship data now includes a meta section.

### Fixed

* Refactored handling of the `sort` query parameter to fix duplicate declaration in the generated schema definition
Expand Down
2 changes: 2 additions & 0 deletions example/tests/integration/test_non_paginated_responses.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ def test_multiple_entries_no_pagination(multiple_entries, client):
"related": "http://testserver/entries/1/suggested/",
"self": "http://testserver/entries/1/relationships/suggested",
},
"meta": {"count": 1},
},
"suggestedHyperlinked": {
"links": {
Expand Down Expand Up @@ -106,6 +107,7 @@ def test_multiple_entries_no_pagination(multiple_entries, client):
"related": "http://testserver/entries/2/suggested/",
"self": "http://testserver/entries/2/relationships/suggested",
},
"meta": {"count": 1},
},
"suggestedHyperlinked": {
"links": {
Expand Down
1 change: 1 addition & 0 deletions example/tests/integration/test_pagination.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ def test_pagination_with_single_entry(single_entry, client):
"related": "http://testserver/entries/1/suggested/",
"self": "http://testserver/entries/1/relationships/suggested",
},
"meta": {"count": 0},
},
"suggestedHyperlinked": {
"links": {
Expand Down
1 change: 1 addition & 0 deletions example/tests/test_filters.py
Original file line number Diff line number Diff line change
Expand Up @@ -512,6 +512,7 @@ def test_search_keywords(self):
{"type": "entries", "id": "11"},
{"type": "entries", "id": "12"},
],
"meta": {"count": 11},
},
"suggestedHyperlinked": {
"links": {
Expand Down
6 changes: 6 additions & 0 deletions rest_framework_json_api/renderers.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
from rest_framework_json_api import utils
from rest_framework_json_api.relations import (
HyperlinkedMixin,
ManySerializerMethodResourceRelatedField,
ResourceRelatedField,
SkipDataMixin,
)
Expand Down Expand Up @@ -152,6 +153,11 @@ def extract_relationships(cls, fields, resource, resource_instance):
if not isinstance(field, SkipDataMixin):
relation_data.update({"data": resource.get(field_name)})

if isinstance(field, ManySerializerMethodResourceRelatedField):
relation_data.update(
{"meta": {"count": len(resource.get(field_name))}}
)

data.update({field_name: relation_data})
continue

Expand Down