diff options
| author | Honza Král <honza.kral@gmail.com> | 2009-06-03 02:37:20 +0000 |
|---|---|---|
| committer | Honza Král <honza.kral@gmail.com> | 2009-06-03 02:37:20 +0000 |
| commit | 795cd55ba29cecae6e06ff1efa06051cabc81f5f (patch) | |
| tree | a87ad26809471fb67beeafc09dd6702be66b7d24 | |
| parent | 08652c8501196f2f9501791949934dc8a2641168 (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.py | 12 |
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. |
