diff options
| author | Joseph Kocherhans <joseph@jkocherhans.com> | 2006-11-30 22:39:19 +0000 |
|---|---|---|
| committer | Joseph Kocherhans <joseph@jkocherhans.com> | 2006-11-30 22:39:19 +0000 |
| commit | 4542f21fc1b82dd0faa7be634640d2173339cb1e (patch) | |
| tree | 1e0fb43c059c4c8657bb5c28fd60af051f194d92 /django/newforms/fields.py | |
| parent | 3afdd8850485c9119b50a5a736d3aa16b7b912fe (diff) | |
generic-auth: Merged to trunk [4148].
git-svn-id: http://code.djangoproject.com/svn/django/branches/generic-auth@4149 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/newforms/fields.py')
| -rw-r--r-- | django/newforms/fields.py | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/django/newforms/fields.py b/django/newforms/fields.py index 40fc18bd3e..b3d44c24ae 100644 --- a/django/newforms/fields.py +++ b/django/newforms/fields.py @@ -76,6 +76,8 @@ class IntegerField(Field): of int(). """ super(IntegerField, self).clean(value) + if not self.required and value in EMPTY_VALUES: + return u'' try: return int(value) except (ValueError, TypeError): @@ -170,6 +172,8 @@ class RegexField(Field): Field.clean(self, value) if value in EMPTY_VALUES: value = u'' value = smart_unicode(value) + if not self.required and value == u'': + return value if not self.regex.search(value): raise ValidationError(self.error_message) return value @@ -246,6 +250,8 @@ class ChoiceField(Field): value = Field.clean(self, value) if value in EMPTY_VALUES: value = u'' value = smart_unicode(value) + if not self.required and value == u'': + return value valid_values = set([str(k) for k, v in self.choices]) if value not in valid_values: raise ValidationError(u'Select a valid choice. %s is not one of the available choices.' % value) @@ -259,10 +265,12 @@ class MultipleChoiceField(ChoiceField): """ Validates that the input is a list or tuple. """ - if not isinstance(value, (list, tuple)): - raise ValidationError(u'Enter a list of values.') if self.required and not value: raise ValidationError(u'This field is required.') + elif not self.required and not value: + return [] + if not isinstance(value, (list, tuple)): + raise ValidationError(u'Enter a list of values.') new_value = [] for val in value: val = smart_unicode(val) @@ -277,6 +285,11 @@ class MultipleChoiceField(ChoiceField): class ComboField(Field): def __init__(self, fields=(), required=True, widget=None): Field.__init__(self, required, widget) + # Set 'required' to False on the individual fields, because the + # required validation will be handled by ComboField, not by those + # individual fields. + for f in fields: + f.required = False self.fields = fields def clean(self, value): |
