Commit 52cc11c4 authored by Malcolm Tredinnick's avatar Malcolm Tredinnick
Browse files

Fixed #4485 -- Allow nullable DecimalFields to store NULLs.

Based on a patch from tdterry. Thanks.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@7797 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent a254f125
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -695,7 +695,7 @@ class DecimalField(Field):
                _("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)
@@ -716,7 +716,6 @@ class DecimalField(Field):
        return u"%.*f" % (self.decimal_places, value)

    def get_db_prep_save(self, value):
        if value is not None:
        value = self._format(value)
        return super(DecimalField, self).get_db_prep_save(value)

+17 −0
Original line number Diff line number Diff line
@@ -15,4 +15,21 @@ Decimal("3.14")
Traceback (most recent call last):
...
ValidationError: [u'This value must be a decimal number.']

>>> f = DecimalField(max_digits=5, decimal_places=1)
>>> x = f.to_python(2)
>>> y = f.to_python('2.6')

>>> f.get_db_prep_save(x)
u'2.0'
>>> f.get_db_prep_save(y)
u'2.6'
>>> f.get_db_prep_save(None)
>>> f.get_db_prep_lookup('exact', x)
[u'2.0']
>>> f.get_db_prep_lookup('exact', y)
[u'2.6']
>>> f.get_db_prep_lookup('exact', None)
[None]

"""