diff options
| author | Tom Christie | 2012-11-05 08:35:54 -0800 | 
|---|---|---|
| committer | Tom Christie | 2012-11-05 08:35:54 -0800 | 
| commit | b87f01aa54739ad82e090da1622e4f711a364402 (patch) | |
| tree | 3392dd47c9d2186ec9477b2523b685c6349a3376 /rest_framework | |
| parent | 33217db33e924c6a5d43416edf4e83f50bff7ee3 (diff) | |
| parent | 6d201c362f030f6b3570247c4f8152a4d9c1e90f (diff) | |
| download | django-rest-framework-b87f01aa54739ad82e090da1622e4f711a364402.tar.bz2 | |
Merge pull request #371 from tomchristie/serializer-fixes
Serializer fixes
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/fields.py | 19 | ||||
| -rw-r--r-- | rest_framework/generics.py | 2 | ||||
| -rw-r--r-- | rest_framework/serializers.py | 42 | ||||
| -rw-r--r-- | rest_framework/tests/genericrelations.py | 2 | ||||
| -rw-r--r-- | rest_framework/tests/hyperlinkedserializers.py | 11 | ||||
| -rw-r--r-- | rest_framework/tests/pagination.py | 4 | ||||
| -rw-r--r-- | rest_framework/tests/pk_relations.py | 26 | ||||
| -rw-r--r-- | rest_framework/tests/serializer.py | 60 | 
8 files changed, 94 insertions, 72 deletions
diff --git a/rest_framework/fields.py b/rest_framework/fields.py index eb4c5e1f..dc726a32 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -40,7 +40,7 @@ class Field(object):          self.source = source -    def initialize(self, parent): +    def initialize(self, parent, field_name):          """          Called to set up a field prior to field_to_native or field_from_native. @@ -248,7 +248,22 @@ class RelatedField(WritableField):      def __init__(self, *args, **kwargs):          self.queryset = kwargs.pop('queryset', None)          super(RelatedField, self).__init__(*args, **kwargs) -        self.read_only = self.default_read_only +        self.read_only = kwargs.pop('read_only', self.default_read_only) + +    def initialize(self, parent, field_name): +        super(RelatedField, self).initialize(parent, field_name) +        if self.queryset is None and not self.read_only: +            try: +                manager = getattr(self.parent.opts.model, self.source or field_name) +                if hasattr(manager, 'related'):  # Forward +                    self.queryset = manager.related.model._default_manager.all() +                else:  # Reverse +                    self.queryset = manager.field.rel.to._default_manager.all() +            except: +                raise +                msg = ('Serializer related fields must include a `queryset`' + +                       ' argument or set `read_only=True') +                raise Exception(msg)      ### We need this stuff to make form choices work... diff --git a/rest_framework/generics.py b/rest_framework/generics.py index 27540a57..7675d7f9 100644 --- a/rest_framework/generics.py +++ b/rest_framework/generics.py @@ -48,7 +48,7 @@ class GenericAPIView(views.APIView):          # TODO: add support for seperate serializer/deserializer          serializer_class = self.get_serializer_class()          context = self.get_serializer_context() -        return serializer_class(data, instance=instance, context=context) +        return serializer_class(instance, data=data, context=context)  class MultipleObjectAPIView(MultipleObjectMixin, GenericAPIView): diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 3d134a74..28767b16 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -6,6 +6,15 @@ from django.db import models  from django.forms import widgets  from django.utils.datastructures import SortedDict  from rest_framework.compat import get_concrete_model + +# Note: We do the following so that users of the framework can use this style: +# +#     example_field = serializers.CharField(...) +# +# This helps keep the seperation between model fields, form fields, and +# serializer fields more explicit. + +  from rest_framework.fields import * @@ -82,10 +91,10 @@ class BaseSerializer(Field):      _options_class = SerializerOptions      _dict_class = SortedDictWithMetadata  # Set to unsorted dict for backwards compatability with unsorted implementations. -    def __init__(self, data=None, instance=None, context=None, **kwargs): +    def __init__(self, instance=None, data=None, context=None, **kwargs):          super(BaseSerializer, self).__init__(**kwargs) -        self.fields = copy.deepcopy(self.base_fields)          self.opts = self._options_class(self.Meta) +        self.fields = copy.deepcopy(self.base_fields)          self.parent = None          self.root = None @@ -100,13 +109,13 @@ class BaseSerializer(Field):      #####      # Methods to determine which fields to use when (de)serializing objects. -    def default_fields(self, serialize, obj=None, data=None, nested=False): +    def default_fields(self, nested=False):          """          Return the complete set of default fields for the object, as a dict.          """          return {} -    def get_fields(self, serialize, obj=None, data=None, nested=False): +    def get_fields(self, nested=False):          """          Returns the complete set of fields for the object as a dict. @@ -119,10 +128,10 @@ class BaseSerializer(Field):          for key, field in self.fields.items():              ret[key] = field              # Set up the field -            field.initialize(parent=self) +            field.initialize(parent=self, field_name=key)          # Add in the default fields -        fields = self.default_fields(serialize, obj, data, nested) +        fields = self.default_fields(nested)          for key, val in fields.items():              if key not in ret:                  ret[key] = val @@ -144,12 +153,12 @@ class BaseSerializer(Field):      #####      # Field methods - used when the serializer class is itself used as a field. -    def initialize(self, parent): +    def initialize(self, parent, field_name):          """          Same behaviour as usual Field, except that we need to keep track          of state so that we can deal with handling maximum depth.          """ -        super(BaseSerializer, self).initialize(parent) +        super(BaseSerializer, self).initialize(parent, field_name)          if parent.opts.depth:              self.opts.depth = parent.opts.depth - 1 @@ -170,7 +179,7 @@ class BaseSerializer(Field):          ret = self._dict_class()          ret.fields = {} -        fields = self.get_fields(serialize=True, obj=obj, nested=bool(self.opts.depth)) +        fields = self.get_fields(nested=bool(self.opts.depth))          for field_name, field in fields.items():              key = self.get_field_key(field_name)              value = field.field_to_native(obj, field_name) @@ -183,7 +192,7 @@ class BaseSerializer(Field):          Core of deserialization, together with `restore_object`.          Converts a dictionary of data into a dictionary of deserialized fields.          """ -        fields = self.get_fields(serialize=False, data=data, nested=bool(self.opts.depth)) +        fields = self.get_fields(nested=bool(self.opts.depth))          reverted_data = {}          for field_name, field in fields.items():              try: @@ -198,7 +207,7 @@ class BaseSerializer(Field):          Run `validate_<fieldname>()` and `validate()` methods on the serializer          """          # TODO: refactor this so we're not determining the fields again -        fields = self.get_fields(serialize=False, data=attrs, nested=bool(self.opts.depth)) +        fields = self.get_fields(nested=bool(self.opts.depth))          for field_name, field in fields.items():              try: @@ -237,11 +246,8 @@ class BaseSerializer(Field):          """          Serialize objects -> primatives.          """ -        if isinstance(obj, dict): -            return dict([(key, self.to_native(val)) -                         for (key, val) in obj.items()]) -        elif hasattr(obj, '__iter__'): -            return [self.to_native(item) for item in obj] +        if hasattr(obj, '__iter__'): +            return [self.convert_object(item) for item in obj]          return self.convert_object(obj)      def from_native(self, data): @@ -323,7 +329,7 @@ class ModelSerializer(Serializer):      """      _options_class = ModelSerializerOptions -    def default_fields(self, serialize, obj=None, data=None, nested=False): +    def default_fields(self, nested=False):          """          Return all the fields that should be serialized for the model.          """ @@ -360,7 +366,7 @@ class ModelSerializer(Serializer):                  field = self.get_field(model_field)              if field: -                field.initialize(parent=self) +                field.initialize(parent=self, field_name=model_field.name)                  ret[model_field.name] = field          return ret diff --git a/rest_framework/tests/genericrelations.py b/rest_framework/tests/genericrelations.py index 1d7e33bc..bc7378e1 100644 --- a/rest_framework/tests/genericrelations.py +++ b/rest_framework/tests/genericrelations.py @@ -25,7 +25,7 @@ class TestGenericRelations(TestCase):                  model = Bookmark                  exclude = ('id',) -        serializer = BookmarkSerializer(instance=self.bookmark) +        serializer = BookmarkSerializer(self.bookmark)          expected = {              'tags': [u'django', u'python'],              'url': u'https://www.djangoproject.com/' diff --git a/rest_framework/tests/hyperlinkedserializers.py b/rest_framework/tests/hyperlinkedserializers.py index 92c3691e..147943c6 100644 --- a/rest_framework/tests/hyperlinkedserializers.py +++ b/rest_framework/tests/hyperlinkedserializers.py @@ -7,12 +7,13 @@ from rest_framework.tests.models import Anchor, BasicModel, ManyToManyModel, Blo  factory = RequestFactory() -class BlogPostCommentSerializer(serializers.Serializer): +class BlogPostCommentSerializer(serializers.ModelSerializer):      text = serializers.CharField() -    blog_post_url = serializers.HyperlinkedRelatedField(source='blog_post', view_name='blogpost-detail', queryset=BlogPost.objects.all()) +    blog_post_url = serializers.HyperlinkedRelatedField(source='blog_post', view_name='blogpost-detail') -    def restore_object(self, attrs, instance=None): -        return BlogPostComment(**attrs) +    class Meta: +        model = BlogPostComment +        fields = ('text', 'blog_post_url')  class BasicList(generics.ListCreateAPIView): @@ -42,7 +43,7 @@ class ManyToManyDetail(generics.RetrieveAPIView):  class BlogPostCommentListCreate(generics.ListCreateAPIView):      model = BlogPostComment -    model_serializer_class = BlogPostCommentSerializer +    serializer_class = BlogPostCommentSerializer  class BlogPostDetail(generics.RetrieveAPIView): diff --git a/rest_framework/tests/pagination.py b/rest_framework/tests/pagination.py index a939c9ef..64e8d822 100644 --- a/rest_framework/tests/pagination.py +++ b/rest_framework/tests/pagination.py @@ -74,13 +74,13 @@ class UnitTestPagination(TestCase):          self.last_page = paginator.page(3)      def test_native_pagination(self): -        serializer = pagination.PaginationSerializer(instance=self.first_page) +        serializer = pagination.PaginationSerializer(self.first_page)          self.assertEquals(serializer.data['count'], 26)          self.assertEquals(serializer.data['next'], '?page=2')          self.assertEquals(serializer.data['previous'], None)          self.assertEquals(serializer.data['results'], self.objects[:10]) -        serializer = pagination.PaginationSerializer(instance=self.last_page) +        serializer = pagination.PaginationSerializer(self.last_page)          self.assertEquals(serializer.data['count'], 26)          self.assertEquals(serializer.data['next'], None)          self.assertEquals(serializer.data['previous'], '?page=2') diff --git a/rest_framework/tests/pk_relations.py b/rest_framework/tests/pk_relations.py index 9095dcd8..94709810 100644 --- a/rest_framework/tests/pk_relations.py +++ b/rest_framework/tests/pk_relations.py @@ -15,7 +15,7 @@ class ManyToManySource(models.Model):  class ManyToManyTargetSerializer(serializers.ModelSerializer): -    sources = serializers.ManyPrimaryKeyRelatedField(queryset=ManyToManySource.objects.all()) +    sources = serializers.ManyPrimaryKeyRelatedField()      class Meta:          model = ManyToManyTarget @@ -63,7 +63,7 @@ class PrimaryKeyManyToManyTests(TestCase):      def test_many_to_many_retrieve(self):          queryset = ManyToManySource.objects.all() -        serializer = ManyToManySourceSerializer(instance=queryset) +        serializer = ManyToManySourceSerializer(queryset)          expected = [                  {'id': 1, 'name': u'source-1', 'targets': [1]},                  {'id': 2, 'name': u'source-2', 'targets': [1, 2]}, @@ -73,7 +73,7 @@ class PrimaryKeyManyToManyTests(TestCase):      def test_reverse_many_to_many_retrieve(self):          queryset = ManyToManyTarget.objects.all() -        serializer = ManyToManyTargetSerializer(instance=queryset) +        serializer = ManyToManyTargetSerializer(queryset)          expected = [              {'id': 1, 'name': u'target-1', 'sources': [1, 2, 3]},              {'id': 2, 'name': u'target-2', 'sources': [2, 3]}, @@ -84,14 +84,14 @@ class PrimaryKeyManyToManyTests(TestCase):      def test_many_to_many_update(self):          data = {'id': 1, 'name': u'source-1', 'targets': [1, 2, 3]}          instance = ManyToManySource.objects.get(pk=1) -        serializer = ManyToManySourceSerializer(data, instance=instance) +        serializer = ManyToManySourceSerializer(instance, data=data)          self.assertTrue(serializer.is_valid())          self.assertEquals(serializer.data, data)          serializer.save()          # Ensure source 1 is updated, and everything else is as expected          queryset = ManyToManySource.objects.all() -        serializer = ManyToManySourceSerializer(instance=queryset) +        serializer = ManyToManySourceSerializer(queryset)          expected = [                  {'id': 1, 'name': u'source-1', 'targets': [1, 2, 3]},                  {'id': 2, 'name': u'source-2', 'targets': [1, 2]}, @@ -102,14 +102,14 @@ class PrimaryKeyManyToManyTests(TestCase):      def test_reverse_many_to_many_update(self):          data = {'id': 1, 'name': u'target-1', 'sources': [1]}          instance = ManyToManyTarget.objects.get(pk=1) -        serializer = ManyToManyTargetSerializer(data, instance=instance) +        serializer = ManyToManyTargetSerializer(instance, data=data)          self.assertTrue(serializer.is_valid())          self.assertEquals(serializer.data, data)          serializer.save()          # Ensure target 1 is updated, and everything else is as expected          queryset = ManyToManyTarget.objects.all() -        serializer = ManyToManyTargetSerializer(instance=queryset) +        serializer = ManyToManyTargetSerializer(queryset)          expected = [              {'id': 1, 'name': u'target-1', 'sources': [1]},              {'id': 2, 'name': u'target-2', 'sources': [2, 3]}, @@ -130,7 +130,7 @@ class PrimaryKeyForeignKeyTests(TestCase):      def test_foreign_key_retrieve(self):          queryset = ForeignKeySource.objects.all() -        serializer = ForeignKeySourceSerializer(instance=queryset) +        serializer = ForeignKeySourceSerializer(queryset)          expected = [              {'id': 1, 'name': u'source-1', 'target': 1},              {'id': 2, 'name': u'source-2', 'target': 1}, @@ -140,7 +140,7 @@ class PrimaryKeyForeignKeyTests(TestCase):      def test_reverse_foreign_key_retrieve(self):          queryset = ForeignKeyTarget.objects.all() -        serializer = ForeignKeyTargetSerializer(instance=queryset) +        serializer = ForeignKeyTargetSerializer(queryset)          expected = [              {'id': 1, 'name': u'target-1', 'sources': [1, 2, 3]},              {'id': 2, 'name': u'target-2', 'sources': []}, @@ -150,14 +150,14 @@ class PrimaryKeyForeignKeyTests(TestCase):      def test_foreign_key_update(self):          data = {'id': 1, 'name': u'source-1', 'target': 2}          instance = ForeignKeySource.objects.get(pk=1) -        serializer = ForeignKeySourceSerializer(data, instance=instance) +        serializer = ForeignKeySourceSerializer(instance, data=data)          self.assertTrue(serializer.is_valid())          self.assertEquals(serializer.data, data)          serializer.save()          # # Ensure source 1 is updated, and everything else is as expected          queryset = ForeignKeySource.objects.all() -        serializer = ForeignKeySourceSerializer(instance=queryset) +        serializer = ForeignKeySourceSerializer(queryset)          expected = [              {'id': 1, 'name': u'source-1', 'target': 2},              {'id': 2, 'name': u'source-2', 'target': 1}, @@ -172,14 +172,14 @@ class PrimaryKeyForeignKeyTests(TestCase):      # def test_reverse_foreign_key_update(self):      #     data = {'id': 1, 'name': u'target-1', 'sources': [1]}      #     instance = ForeignKeyTarget.objects.get(pk=1) -    #     serializer = ForeignKeyTargetSerializer(data, instance=instance) +    #     serializer = ForeignKeyTargetSerializer(instance, data=data)      #     self.assertTrue(serializer.is_valid())      #     self.assertEquals(serializer.data, data)      #     serializer.save()      #     # Ensure target 1 is updated, and everything else is as expected      #     queryset = ForeignKeyTarget.objects.all() -    #     serializer = ForeignKeyTargetSerializer(instance=queryset) +    #     serializer = ForeignKeyTargetSerializer(queryset)      #     expected = [      #         {'id': 1, 'name': u'target-1', 'sources': [1]},      #         {'id': 2, 'name': u'target-2', 'sources': []}, diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/serializer.py index 3fd49064..8d1de429 100644 --- a/rest_framework/tests/serializer.py +++ b/rest_framework/tests/serializer.py @@ -87,11 +87,11 @@ class BasicTests(TestCase):          self.assertEquals(serializer.data, expected)      def test_retrieve(self): -        serializer = CommentSerializer(instance=self.comment) +        serializer = CommentSerializer(self.comment)          self.assertEquals(serializer.data, self.expected)      def test_create(self): -        serializer = CommentSerializer(self.data) +        serializer = CommentSerializer(data=self.data)          expected = self.comment          self.assertEquals(serializer.is_valid(), True)          self.assertEquals(serializer.object, expected) @@ -99,25 +99,25 @@ class BasicTests(TestCase):          self.assertEquals(serializer.data['sub_comment'], 'And Merry Christmas!')      def test_update(self): -        serializer = CommentSerializer(self.data, instance=self.comment) +        serializer = CommentSerializer(self.comment, data=self.data)          expected = self.comment          self.assertEquals(serializer.is_valid(), True)          self.assertEquals(serializer.object, expected)          self.assertTrue(serializer.object is expected)          self.assertEquals(serializer.data['sub_comment'], 'And Merry Christmas!') -     +      def test_model_fields_as_expected(self):          """ Make sure that the fields returned are the same as defined          in the Meta data          """ -        serializer = PersonSerializer(instance=self.person) +        serializer = PersonSerializer(self.person)          self.assertEquals(set(serializer.data.keys()),                            set(['name', 'age', 'info']))      def test_field_with_dictionary(self):          """ Make sure that dictionaries from fields are left intact          """ -        serializer = PersonSerializer(instance=self.person) +        serializer = PersonSerializer(self.person)          expected = self.person_data          self.assertEquals(serializer.data['info'], expected) @@ -138,12 +138,12 @@ class ValidationTests(TestCase):          )      def test_create(self): -        serializer = CommentSerializer(self.data) +        serializer = CommentSerializer(data=self.data)          self.assertEquals(serializer.is_valid(), False)          self.assertEquals(serializer.errors, {'content': [u'Ensure this value has at most 1000 characters (it has 1001).']})      def test_update(self): -        serializer = CommentSerializer(self.data, instance=self.comment) +        serializer = CommentSerializer(self.comment, data=self.data)          self.assertEquals(serializer.is_valid(), False)          self.assertEquals(serializer.errors, {'content': [u'Ensure this value has at most 1000 characters (it has 1001).']}) @@ -152,7 +152,7 @@ class ValidationTests(TestCase):              'content': 'xxx',              'created': datetime.datetime(2012, 1, 1)          } -        serializer = CommentSerializer(data, instance=self.comment) +        serializer = CommentSerializer(self.comment, data=data)          self.assertEquals(serializer.is_valid(), False)          self.assertEquals(serializer.errors, {'email': [u'This field is required.']}) @@ -163,7 +163,7 @@ class ValidationTests(TestCase):              'title': 'Some action item',              #No 'done' value.          } -        serializer = ActionItemSerializer(data, instance=self.actionitem) +        serializer = ActionItemSerializer(self.actionitem, data=data)          self.assertEquals(serializer.is_valid(), True)          self.assertEquals(serializer.errors, {}) @@ -183,12 +183,12 @@ class ValidationTests(TestCase):              'created': datetime.datetime(2012, 1, 1)          } -        serializer = CommentSerializerWithFieldValidator(data) +        serializer = CommentSerializerWithFieldValidator(data=data)          self.assertTrue(serializer.is_valid())          data['content'] = 'This should not validate' -        serializer = CommentSerializerWithFieldValidator(data) +        serializer = CommentSerializerWithFieldValidator(data=data)          self.assertFalse(serializer.is_valid())          self.assertEquals(serializer.errors, {'content': [u'Test not in value']}) @@ -207,12 +207,12 @@ class ValidationTests(TestCase):              'created': datetime.datetime(2012, 1, 1)          } -        serializer = CommentSerializerWithCrossFieldValidator(data) +        serializer = CommentSerializerWithCrossFieldValidator(data=data)          self.assertTrue(serializer.is_valid())          data['content'] = 'A comment from foo@bar.com' -        serializer = CommentSerializerWithCrossFieldValidator(data) +        serializer = CommentSerializerWithCrossFieldValidator(data=data)          self.assertFalse(serializer.is_valid())          self.assertEquals(serializer.errors, {'non_field_errors': [u'Email address not in content']}) @@ -220,7 +220,7 @@ class ValidationTests(TestCase):          """          Omitting a value for null-field should validate.          """ -        serializer = PersonSerializer({'name': 'marko'}) +        serializer = PersonSerializer(data={'name': 'marko'})          self.assertEquals(serializer.is_valid(), True)          self.assertEquals(serializer.errors, {}) @@ -270,7 +270,7 @@ class ManyToManyTests(TestCase):          Create an instance of a model with a ManyToMany relationship.          """          data = {'rel': [self.anchor.id]} -        serializer = self.serializer_class(data) +        serializer = self.serializer_class(data=data)          self.assertEquals(serializer.is_valid(), True)          instance = serializer.save()          self.assertEquals(len(ManyToManyModel.objects.all()), 2) @@ -284,7 +284,7 @@ class ManyToManyTests(TestCase):          new_anchor = Anchor()          new_anchor.save()          data = {'rel': [self.anchor.id, new_anchor.id]} -        serializer = self.serializer_class(data, instance=self.instance) +        serializer = self.serializer_class(self.instance, data=data)          self.assertEquals(serializer.is_valid(), True)          instance = serializer.save()          self.assertEquals(len(ManyToManyModel.objects.all()), 1) @@ -297,7 +297,7 @@ class ManyToManyTests(TestCase):          containing no items.          """          data = {'rel': []} -        serializer = self.serializer_class(data) +        serializer = self.serializer_class(data=data)          self.assertEquals(serializer.is_valid(), True)          instance = serializer.save()          self.assertEquals(len(ManyToManyModel.objects.all()), 2) @@ -312,7 +312,7 @@ class ManyToManyTests(TestCase):          new_anchor = Anchor()          new_anchor.save()          data = {'rel': []} -        serializer = self.serializer_class(data, instance=self.instance) +        serializer = self.serializer_class(self.instance, data=data)          self.assertEquals(serializer.is_valid(), True)          instance = serializer.save()          self.assertEquals(len(ManyToManyModel.objects.all()), 1) @@ -326,7 +326,7 @@ class ManyToManyTests(TestCase):          lists (eg form data).          """          data = {'rel': ''} -        serializer = self.serializer_class(data) +        serializer = self.serializer_class(data=data)          self.assertEquals(serializer.is_valid(), True)          instance = serializer.save()          self.assertEquals(len(ManyToManyModel.objects.all()), 2) @@ -364,7 +364,7 @@ class ReadOnlyManyToManyTests(TestCase):          new_anchor = Anchor()          new_anchor.save()          data = {'rel': [self.anchor.id, new_anchor.id]} -        serializer = self.serializer_class(data, instance=self.instance) +        serializer = self.serializer_class(self.instance, data=data)          self.assertEquals(serializer.is_valid(), True)          instance = serializer.save()          self.assertEquals(len(ReadOnlyManyToManyModel.objects.all()), 1) @@ -380,7 +380,7 @@ class ReadOnlyManyToManyTests(TestCase):          new_anchor = Anchor()          new_anchor.save()          data = {} -        serializer = self.serializer_class(data, instance=self.instance) +        serializer = self.serializer_class(self.instance, data=data)          self.assertEquals(serializer.is_valid(), True)          instance = serializer.save()          self.assertEquals(len(ReadOnlyManyToManyModel.objects.all()), 1) @@ -400,7 +400,7 @@ class DefaultValueTests(TestCase):      def test_create_using_default(self):          data = {} -        serializer = self.serializer_class(data) +        serializer = self.serializer_class(data=data)          self.assertEquals(serializer.is_valid(), True)          instance = serializer.save()          self.assertEquals(len(self.objects.all()), 1) @@ -409,7 +409,7 @@ class DefaultValueTests(TestCase):      def test_create_overriding_default(self):          data = {'text': 'overridden'} -        serializer = self.serializer_class(data) +        serializer = self.serializer_class(data=data)          self.assertEquals(serializer.is_valid(), True)          instance = serializer.save()          self.assertEquals(len(self.objects.all()), 1) @@ -428,7 +428,7 @@ class CallableDefaultValueTests(TestCase):      def test_create_using_default(self):          data = {} -        serializer = self.serializer_class(data) +        serializer = self.serializer_class(data=data)          self.assertEquals(serializer.is_valid(), True)          instance = serializer.save()          self.assertEquals(len(self.objects.all()), 1) @@ -437,7 +437,7 @@ class CallableDefaultValueTests(TestCase):      def test_create_overriding_default(self):          data = {'text': 'overridden'} -        serializer = self.serializer_class(data) +        serializer = self.serializer_class(data=data)          self.assertEquals(serializer.is_valid(), True)          instance = serializer.save()          self.assertEquals(len(self.objects.all()), 1) @@ -499,11 +499,11 @@ class BlankFieldTests(TestCase):          self.data = {'title': ''}      def test_create_blank_field(self): -        serializer = self.serializer_class(self.data) +        serializer = self.serializer_class(data=self.data)          self.assertEquals(serializer.is_valid(), True)      def test_create_model_blank_field(self): -        serializer = self.model_serializer_class(self.data) +        serializer = self.model_serializer_class(data=self.data)          self.assertEquals(serializer.is_valid(), True)      def test_create_not_blank_field(self): @@ -511,7 +511,7 @@ class BlankFieldTests(TestCase):          Test to ensure blank data in a field not marked as blank=True          is considered invalid in a non-model serializer          """ -        serializer = self.not_blank_serializer_class(self.data) +        serializer = self.not_blank_serializer_class(data=self.data)          self.assertEquals(serializer.is_valid(), False)      def test_create_model_not_blank_field(self): @@ -519,5 +519,5 @@ class BlankFieldTests(TestCase):          Test to ensure blank data in a field not marked as blank=True          is considered invalid in a model serializer          """ -        serializer = self.not_blank_model_serializer_class(self.data) +        serializer = self.not_blank_model_serializer_class(data=self.data)          self.assertEquals(serializer.is_valid(), False)  | 
