summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHonza Král <honza.kral@gmail.com>2009-06-03 02:37:20 +0000
committerHonza Král <honza.kral@gmail.com>2009-06-03 02:37:20 +0000
commit795cd55ba29cecae6e06ff1efa06051cabc81f5f (patch)
treea87ad26809471fb67beeafc09dd6702be66b7d24
parent08652c8501196f2f9501791949934dc8a2641168 (diff)
[soc2009/model-validation] DecimalField done
git-svn-id: http://code.djangoproject.com/svn/django/branches/soc2009/model-validation@10903 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/forms/fields.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/django/forms/fields.py b/django/forms/fields.py
index 4b135e0319..449ebc8216 100644
--- a/django/forms/fields.py
+++ b/django/forms/fields.py
@@ -208,6 +208,8 @@ class IntegerField(Field):
def validate(self, value):
super(IntegerField, self).validate(value)
+ if value in EMPTY_VALUES:
+ return
if self.max_value is not None and value > self.max_value:
raise ValidationError(self.error_messages['max_value'] % self.max_value)
if self.min_value is not None and value < self.min_value:
@@ -250,22 +252,26 @@ class DecimalField(Field):
self.max_digits, self.decimal_places = max_digits, decimal_places
Field.__init__(self, *args, **kwargs)
- def clean(self, value):
+ def to_python(self, value):
"""
Validates that the input is a decimal number. Returns a Decimal
instance. Returns None for empty values. Ensures that there are no more
than max_digits in the number, and no more than decimal_places digits
after the decimal point.
"""
- super(DecimalField, self).clean(value)
- if not self.required and value in EMPTY_VALUES:
+ if value in EMPTY_VALUES:
return None
value = smart_str(value).strip()
try:
value = Decimal(value)
except DecimalException:
raise ValidationError(self.error_messages['invalid'])
+ return value
+ def validate(self, value):
+ super(DecimalField, self).validate(value)
+ if value in EMPTY_VALUES:
+ return
sign, digittuple, exponent = value.as_tuple()
decimals = abs(exponent)
# digittuple doesn't include any leading zeros.