Skip to content

Commit e79d960

Browse files
committed
Merge branch 'fix/include-in-many-related-serializer' of https://github.com/tbartelmess/django-rest-framework-json-api into tbartelmess-fix/include-in-many-related-serializer
Closes #260
2 parents 38c7ca2 + c1049e4 commit e79d960

File tree

3 files changed

+13
-1
lines changed

3 files changed

+13
-1
lines changed

‎example/serializers.py

+1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ def __init__(self, *args, **kwargs):
3535
'authors': 'example.serializers.AuthorSerializer',
3636
'comments': 'example.serializers.CommentSerializer',
3737
'featured': 'example.serializers.EntrySerializer',
38+
'suggested': 'example.serializers.EntrySerializer',
3839
}
3940

4041
body_format = serializers.SerializerMethodField()

‎example/tests/integration/test_includes.py

+9
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,15 @@ def test_dynamic_related_data_is_included(single_entry, entry_factory, client):
5353
assert len(included) == 1, 'The dynamically included blog entries are of an incorrect count'
5454

5555

56+
def test_dynamic_many_related_data_is_included(single_entry, entry_factory, client):
57+
entry_factory()
58+
response = client.get(reverse("entry-detail", kwargs={'pk': single_entry.pk}) + '?include=suggested')
59+
included = load_json(response.content).get('included')
60+
61+
assert included
62+
assert [x.get('type') for x in included] == ['entries'], 'Dynamic included types are incorrect'
63+
64+
5665
def test_missing_field_not_included(author_bio_factory, author_factory, client):
5766
# First author does not have a bio
5867
author = author_factory(bio=None)

‎rest_framework_json_api/renderers.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -300,8 +300,10 @@ def extract_included(fields, resource, resource_instance, included_resources):
300300
if isinstance(field, relations.RelatedField):
301301
if relation_instance is None:
302302
continue
303+
304+
many = field._kwargs.get('child_relation', None) is not None
303305
serializer_class = included_serializers[field_name]
304-
field = serializer_class(relation_instance, context=context)
306+
field = serializer_class(relation_instance, many=many, context=context)
305307
serializer_data = field.data
306308

307309
if isinstance(field, ListSerializer):

0 commit comments

Comments
 (0)