diff --git a/db/models/fields/files.py b/db/models/fields/files.py
index e631f17..f3bfda6 100644
--- a/db/models/fields/files.py
+++ b/db/models/fields/files.py
@@ -168,6 +168,9 @@ class FileDescriptor(object):
         # in __set__.
         file = instance.__dict__[self.field.name]
 
+        if file is None:
+            return None
+
         # If this value is a string (instance.file = "path/to/file") or None
         # then we simply wrap it with the appropriate attribute class according
         # to the file field. [This is FieldFile for FileFields and
@@ -175,7 +178,7 @@ class FileDescriptor(object):
         # subclasses might also want to subclass the attribute class]. This
         # object understands how to convert a path to a file, and also how to
         # handle None.
-        if isinstance(file, six.string_types) or file is None:
+        if isinstance(file, six.string_types):
             attr = self.field.attr_class(instance, self.field, file)
             instance.__dict__[self.field.name] = attr
 
@@ -238,7 +241,7 @@ class FileField(Field):
     def get_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 not value:
             return None
         return six.text_type(value)
 
