Index: django/db/models/fields/__init__.py
===================================================================
--- django/db/models/fields/__init__.py	(revision 6189)
+++ django/db/models/fields/__init__.py	(working copy)
@@ -634,7 +634,7 @@
                 _("This value must be a decimal number."))
 
     def _format(self, value):
-        if isinstance(value, basestring):
+        if isinstance(value, basestring) or value is None:
             return value
         else:
             return self.format_number(value)
Index: tests/regressiontests/model_fields/tests.py
===================================================================
--- tests/regressiontests/model_fields/tests.py	(revision 6188)
+++ tests/regressiontests/model_fields/tests.py	(working copy)
@@ -15,4 +15,23 @@
 Traceback (most recent call last):
 ...
 ValidationError: [u'This value must be a decimal number.']
+
+>>> f = DecimalField(max_digits=5, decimal_places=1)
+
+>>> f.get_db_prep_save(2.0)
+u'2.0'
+
+>>> f.get_db_prep_save(2.56)
+u'2.6'
+
+>>> f.get_db_prep_save(None)
+
+>>> f.get_db_prep_lookup('exact', 2.0)
+[u'2.0']
+
+>>> f.get_db_prep_lookup('exact', 2.56)
+[u'2.6']
+
+>>> f.get_db_prep_lookup('exact', None)
+[None]
 """
