diff --git a/django/db/models/fields/files.py b/django/db/models/fields/files.py
index f9bfc9d..a459fbf 100644
--- a/django/db/models/fields/files.py
+++ b/django/db/models/fields/files.py
@@ -20,7 +20,7 @@ class FieldFile(File):
         self.instance = instance
         self.field = field
         self.storage = field.storage
-        self._name = name or u''
+        self._name = name
         self._closed = False
         self._committed = True
 
@@ -175,7 +175,7 @@ class FileField(Field):
     def get_db_prep_value(self, value):
         "Returns field's value prepared for saving into a database."
         # Need to convert File objects provided via a form to unicode for database insertion
-        if value is None:
+        if value is None or (hasattr(value, 'name') and value.name is None and self.null):
             return None
         return unicode(value)
 
diff --git a/tests/modeltests/files/models.py b/tests/modeltests/files/models.py
index 741a284..2e03e3c 100644
--- a/tests/modeltests/files/models.py
+++ b/tests/modeltests/files/models.py
@@ -31,7 +31,7 @@ class Storage(models.Model):
 
     normal = models.FileField(storage=temp_storage, upload_to='tests')
     custom = models.FileField(storage=temp_storage, upload_to=custom_upload_to)
-    random = models.FileField(storage=temp_storage, upload_to=random_upload_to)
+    random = models.FileField(storage=temp_storage, upload_to=random_upload_to, null=True)
     default = models.FileField(storage=temp_storage, upload_to='tests', default='tests/default.txt')
 
 __test__ = {'API_TESTS':"""
@@ -127,6 +127,12 @@ ValueError: The 'normal' attribute has no file associated with it.
 >>> obj4.random.save('random_file', ContentFile('random content'))
 >>> obj4.random
 <FieldFile: .../random_file>
+>>> obj4.random = None
+>>> obj4.save()
+>>> obj4.random
+<FieldFile: None>
+>>> Storage.objects.values_list('random', flat=True).filter(pk=obj4.pk)
+[None]
 
 # Clean up the temporary files and dir.
 >>> obj1.normal.delete()
