diff --git a/example/tests/test_views.py b/example/tests/test_views.py index 3f14c031..c8221077 100644 --- a/example/tests/test_views.py +++ b/example/tests/test_views.py @@ -145,6 +145,22 @@ def test_delete_to_one_relationship_should_fail(self): response = self.client.delete(url, data=json.dumps(request_data), content_type='application/vnd.api+json') assert response.status_code == 405, response.content.decode() + def test_delete_relationship_overriding_with_none(self): + url = '/comments/{}'.format(self.second_comment.id) + request_data = { + 'data': { + 'type': 'comments', + 'relationships': { + 'author': { + 'data': None + } + } + } + } + response = self.client.patch(url, data=json.dumps(request_data), content_type='application/vnd.api+json') + assert response.status_code == 200, response.content.decode() + assert response.data['author'] == None + def test_delete_to_many_relationship_with_no_change(self): url = '/entries/{}/relationships/comment_set'.format(self.first_entry.id) request_data = { diff --git a/example/urls_test.py b/example/urls_test.py index 96f415fd..0f8ed73b 100644 --- a/example/urls_test.py +++ b/example/urls_test.py @@ -1,7 +1,7 @@ from django.conf.urls import include, url from rest_framework import routers -from example.views import BlogViewSet, EntryViewSet, AuthorViewSet, EntryRelationshipView, BlogRelationshipView, \ +from example.views import BlogViewSet, EntryViewSet, AuthorViewSet, CommentViewSet, EntryRelationshipView, BlogRelationshipView, \ CommentRelationshipView, AuthorRelationshipView from .api.resources.identity import Identity, GenericIdentity @@ -10,6 +10,7 @@ router.register(r'blogs', BlogViewSet) router.register(r'entries', EntryViewSet) router.register(r'authors', AuthorViewSet) +router.register(r'comments', CommentViewSet) # for the old tests router.register(r'identities', Identity) diff --git a/rest_framework_json_api/parsers.py b/rest_framework_json_api/parsers.py index a918aaeb..30b9ad0e 100644 --- a/rest_framework_json_api/parsers.py +++ b/rest_framework_json_api/parsers.py @@ -40,7 +40,7 @@ def parse_relationships(data): parsed_relationships = dict() for field_name, field_data in relationships.items(): field_data = field_data.get('data') - if isinstance(field_data, dict): + if isinstance(field_data, dict) or field_data is None: parsed_relationships[field_name] = field_data elif isinstance(field_data, list): parsed_relationships[field_name] = list(relation for relation in field_data)