Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

Lines changed: 1 addition & 0 deletions
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

Lines changed: 9 additions & 0 deletions
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

Lines changed: 3 additions & 1 deletion
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)

AltStyle によって変換されたページ (->オリジナル) /