File tree Expand file tree Collapse file tree 2 files changed +16
-0
lines changed Expand file tree Collapse file tree 2 files changed +16
-0
lines changed Original file line number Diff line number Diff line change @@ -166,6 +166,12 @@ def save(self, **kwargs):
166166 "For example: 'serializer.save(owner=request.user)'.'"
167167 )
168168
169+ assert not hasattr (self , '_data' ), (
170+ "You cannot call `.save()` after accessing `serializer.data`."
171+ "If you need to access data before committing to the database then "
172+ "inspect 'serializer.validated_data' instead. "
173+ )
174+
169175 validated_data = dict (
170176 list (self .validated_data .items ()) +
171177 list (kwargs .items ())
Original file line number Diff line number Diff line change @@ -51,6 +51,16 @@ class MissingAttributes:
5151 with pytest .raises (AttributeError ):
5252 serializer .data
5353
54+ def test_data_access_before_save_raises_error (self ):
55+ def create (validated_data ):
56+ return validated_data
57+ serializer = self .Serializer (data = {'char' : 'abc' , 'integer' : 123 })
58+ serializer .create = create
59+ assert serializer .is_valid ()
60+ assert serializer .data == {'char' : 'abc' , 'integer' : 123 }
61+ with pytest .raises (AssertionError ):
62+ serializer .save ()
63+
5464
5565class TestValidateMethod :
5666 def test_non_field_error_validate_method (self ):
You can’t perform that action at this time.
0 commit comments