diff -r f7a90d86bf60 django/db/models/fields/__init__.py
--- a/django/db/models/fields/__init__.py	Sat Jun 21 20:57:05 2008 +0000
+++ b/django/db/models/fields/__init__.py	Sun Jun 22 21:51:59 2008 -0400
@@ -689,7 +689,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)
diff -r f7a90d86bf60 tests/regressiontests/model_fields/tests.py
--- a/tests/regressiontests/model_fields/tests.py	Sat Jun 21 20:57:05 2008 +0000
+++ b/tests/regressiontests/model_fields/tests.py	Sun Jun 22 21:51:59 2008 -0400
@@ -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]
+
 """
