File tree Expand file tree Collapse file tree 3 files changed +16
-0
lines changed Expand file tree Collapse file tree 3 files changed +16
-0
lines changed Original file line number Diff line number Diff line change @@ -33,6 +33,7 @@ This release is not backwards compatible. For easy migration best upgrade first
3333### Fixed
3434
3535* Avoid printing invalid pointer when api returns 404
36+ * Avoid exception when using ` ResourceIdentifierObjectSerializer ` with unexisting primary key
3637
3738
3839## [ 2.8.0] - 2019-06-13
Original file line number Diff line number Diff line change @@ -119,6 +119,20 @@ def test_deserialize_primitive_data_blog(self):
119119 self .assertTrue (serializer .is_valid (), msg = serializer .errors )
120120 assert serializer .validated_data == self .blog
121121
122+ def test_deserialize_primitive_data_blog_with_unexisting_pk (self ):
123+ unexisting_pk = self .blog .id
124+ self .blog .delete ()
125+ assert not Blog .objects .filter (id = unexisting_pk ).exists ()
126+
127+ initial_data = {
128+ 'type' : format_resource_type ('Blog' ),
129+ 'id' : str (unexisting_pk )
130+ }
131+ serializer = ResourceIdentifierObjectSerializer (data = initial_data , model_class = Blog )
132+
133+ self .assertFalse (serializer .is_valid ())
134+ self .assertEqual (serializer .errors [0 ].code , 'does_not_exist' )
135+
122136 def test_data_in_correct_format_when_instantiated_with_queryset (self ):
123137 qs = Author .objects .all ()
124138 serializer = ResourceIdentifierObjectSerializer (instance = qs , many = True )
Original file line number Diff line number Diff line change 11import inflection
2+ from django .core .exceptions import ObjectDoesNotExist
23from django .db .models .query import QuerySet
34from django .utils .translation import ugettext_lazy as _
45from rest_framework .exceptions import ParseError
You can’t perform that action at this time.
0 commit comments