mirror of
https://github.com/encode/django-rest-framework.git
synced 2025-06-06 22:53:24 +03:00
Merge pull request #1117 from carltongibson/#1116
Clear cached serializer data on `save()` + test. Fixes #1116.
This commit is contained in:
commit
d9a8bc0892
|
@ -518,6 +518,9 @@ class BaseSerializer(WritableField):
|
||||||
"""
|
"""
|
||||||
Save the deserialized object and return it.
|
Save the deserialized object and return it.
|
||||||
"""
|
"""
|
||||||
|
# Clear cached _data, which may be invalidated by `save()`
|
||||||
|
self._data = None
|
||||||
|
|
||||||
if isinstance(self.object, list):
|
if isinstance(self.object, list):
|
||||||
[self.save_object(item, **kwargs) for item in self.object]
|
[self.save_object(item, **kwargs) for item in self.object]
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models.fields import BLANK_CHOICE_DASH
|
from django.db.models.fields import BLANK_CHOICE_DASH
|
||||||
|
@ -136,6 +137,7 @@ class BasicTests(TestCase):
|
||||||
'Happy new year!',
|
'Happy new year!',
|
||||||
datetime.datetime(2012, 1, 1)
|
datetime.datetime(2012, 1, 1)
|
||||||
)
|
)
|
||||||
|
self.actionitem = ActionItem(title='Some to do item',)
|
||||||
self.data = {
|
self.data = {
|
||||||
'email': 'tom@example.com',
|
'email': 'tom@example.com',
|
||||||
'content': 'Happy new year!',
|
'content': 'Happy new year!',
|
||||||
|
@ -264,6 +266,20 @@ class BasicTests(TestCase):
|
||||||
"""
|
"""
|
||||||
self.assertRaises(AssertionError, PersonSerializerInvalidReadOnly, [])
|
self.assertRaises(AssertionError, PersonSerializerInvalidReadOnly, [])
|
||||||
|
|
||||||
|
def test_serializer_data_is_cleared_on_save(self):
|
||||||
|
"""
|
||||||
|
Check _data attribute is cleared on `save()`
|
||||||
|
|
||||||
|
Regression test for #1116
|
||||||
|
— id field is not populated if `data` is accessed prior to `save()`
|
||||||
|
"""
|
||||||
|
serializer = ActionItemSerializer(self.actionitem)
|
||||||
|
self.assertIsNone(serializer.data.get('id',None), 'New instance. `id` should not be set.')
|
||||||
|
serializer.save()
|
||||||
|
self.assertIsNotNone(serializer.data.get('id',None), 'Model is saved. `id` should be set.')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class DictStyleSerializer(serializers.Serializer):
|
class DictStyleSerializer(serializers.Serializer):
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue
Block a user