diff -r 822cb5c6f684 django/trunk/django/db/models/fields/files.py
--- a/django/trunk/django/db/models/fields/files.py	Sun Mar 01 08:15:52 2009 +0000
+++ b/django/trunk/django/db/models/fields/files.py	Sun Mar 01 16:12:59 2009 +0100
@@ -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
 
@@ -97,7 +97,7 @@ class FieldFile(File):
             
         self.storage.delete(self.name)
 
-        self._name = None
+        self._name = u'' 
         setattr(self.instance, self.field.name, self.name)
 
         # Delete the filesize cache
@@ -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):
             return None
         return unicode(value)
 
diff -r 822cb5c6f684 django/trunk/tests/modeltests/files/models.py
--- a/django/trunk/tests/modeltests/files/models.py	Sun Mar 01 08:15:52 2009 +0000
+++ b/django/trunk/tests/modeltests/files/models.py	Sun Mar 01 16:12:59 2009 +0100
@@ -29,9 +29,10 @@ class Storage(models.Model):
         import random
         return '%s/%s' % (random.randint(100, 999), filename)
 
+    empty = models.CharField(max_length=1, null=True)
     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':"""
@@ -133,6 +134,13 @@ 12
 >>> obj4.random.save('random_file', ContentFile('random content'))
 >>> obj4.random
 <FieldFile: .../random_file>
+>>> obj4.random = None
+>>> obj4.empty = None
+>>> obj4.save()
+>>> obj4.random
+<FieldFile: None>
+>>> Storage.objects.values_list('random', 'empty').filter(pk=obj4.pk)
+[(None, None)]
 
 # Clean up the temporary files and dir.
 >>> obj1.normal.delete()
