Skip to content

Commit 7640bfe

Browse files
Add assert statement to .save() method in Serializer:
- Asserts that `_data` does not exist when calling `.save()`
1 parent 134f5fa commit 7640bfe

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

rest_framework/serializers.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff 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())

tests/test_serializer.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ def create(validated_data):
6161
with pytest.raises(AssertionError):
6262
serializer.save()
6363

64+
6465
class TestValidateMethod:
6566
def test_non_field_error_validate_method(self):
6667
class ExampleSerializer(serializers.Serializer):

0 commit comments

Comments
 (0)