From f901d9922663f388bf662e1bfcec74672bd96eba Mon Sep 17 00:00:00 2001 From: Anton-Shutik Date: Thu, 8 Aug 2019 17:12:23 +0300 Subject: [PATCH 1/3] Added "ObjectDoesNotExist" import --- rest_framework_json_api/serializers.py | 1 + 1 file changed, 1 insertion(+) diff --git a/rest_framework_json_api/serializers.py b/rest_framework_json_api/serializers.py index 8a038c54..be0dcace 100644 --- a/rest_framework_json_api/serializers.py +++ b/rest_framework_json_api/serializers.py @@ -1,4 +1,5 @@ import inflection +from django.core.exceptions import ObjectDoesNotExist from django.db.models.query import QuerySet from django.utils.translation import ugettext_lazy as _ from rest_framework.exceptions import ParseError From d2d927bbde48c32b148d921db56d0dc3c40d7d26 Mon Sep 17 00:00:00 2001 From: Anton-Shutik Date: Mon, 12 Aug 2019 11:19:35 +0300 Subject: [PATCH 2/3] Added test --- example/tests/test_serializers.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/example/tests/test_serializers.py b/example/tests/test_serializers.py index 708e4a3e..e1296e2f 100644 --- a/example/tests/test_serializers.py +++ b/example/tests/test_serializers.py @@ -119,6 +119,20 @@ def test_deserialize_primitive_data_blog(self): self.assertTrue(serializer.is_valid(), msg=serializer.errors) assert serializer.validated_data == self.blog + def test_deserialize_primitive_data_blog_with_unexisting_pk(self): + unexisting_pk = self.blog.id + self.blog.delete() + assert not Blog.objects.filter(id=unexisting_pk).exists() + + initial_data = { + 'type': format_resource_type('Blog'), + 'id': str(unexisting_pk) + } + serializer = ResourceIdentifierObjectSerializer(data=initial_data, model_class=Blog) + + self.assertFalse(serializer.is_valid()) + self.assertEqual(serializer.errors[0].code, 'does_not_exist') + def test_data_in_correct_format_when_instantiated_with_queryset(self): qs = Author.objects.all() serializer = ResourceIdentifierObjectSerializer(instance=qs, many=True) From effbd060a884ddb9b7a0a15d9ef53be11007464c Mon Sep 17 00:00:00 2001 From: Oliver Sauder Date: Thu, 15 Aug 2019 20:09:31 +0200 Subject: [PATCH 3/3] Add changelog entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e43e850d..ef56568b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ This release is not backwards compatible. For easy migration best upgrade first ### Fixed * Avoid printing invalid pointer when api returns 404 +* Avoid exception when using `ResourceIdentifierObjectSerializer` with unexisting primary key ## [2.8.0] - 2019-06-13