diff options
| -rw-r--r-- | docs/topics/release-notes.md | 1 | ||||
| -rw-r--r-- | rest_framework/fields.py | 1 | ||||
| -rw-r--r-- | rest_framework/tests/files.py | 14 | 
3 files changed, 15 insertions, 1 deletions
| diff --git a/docs/topics/release-notes.md b/docs/topics/release-notes.md index e4bd1217..0e206809 100644 --- a/docs/topics/release-notes.md +++ b/docs/topics/release-notes.md @@ -21,6 +21,7 @@ Major version numbers (x.0.0) are reserved for project milestones.  No major poi  * Added `PATCH` support.  * Added `RetrieveUpdateAPIView`.  * Relation changes are now persisted in `save` instead of in `.restore_object`. +* Bugfix: Fix issue with FileField validation with files=None.  ### 2.1.14 diff --git a/rest_framework/fields.py b/rest_framework/fields.py index d8b82e5f..a022fe09 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -181,6 +181,7 @@ class WritableField(Field):          try:              if self._use_files: +                files = files or {}                  native = files[field_name]              else:                  native = data[field_name] diff --git a/rest_framework/tests/files.py b/rest_framework/tests/files.py index 5dd57b7c..446e23c0 100644 --- a/rest_framework/tests/files.py +++ b/rest_framework/tests/files.py @@ -25,7 +25,6 @@ class UploadedFileSerializer(serializers.Serializer):  class FileSerializerTests(TestCase): -      def test_create(self):          now = datetime.datetime.now()          file = StringIO.StringIO('stuff') @@ -37,3 +36,16 @@ class FileSerializerTests(TestCase):          self.assertEquals(serializer.object.created, uploaded_file.created)          self.assertEquals(serializer.object.file, uploaded_file.file)          self.assertFalse(serializer.object is uploaded_file) + +    def test_creation_failure(self): +        """ +        Passing files=None should result in an ValidationError + +        Regression test for: +        https://github.com/tomchristie/django-rest-framework/issues/542 +        """ +        now = datetime.datetime.now() + +        serializer = UploadedFileSerializer(data={'created': now}) +        self.assertFalse(serializer.is_valid()) +        self.assertIn('file', serializer.errors) | 
