summaryrefslogtreecommitdiff
path: root/django/newforms/fields.py
diff options
context:
space:
mode:
authorJason Pellerin <jpellerin@gmail.com>2006-12-04 21:12:29 +0000
committerJason Pellerin <jpellerin@gmail.com>2006-12-04 21:12:29 +0000
commit55d7f6519c8d13a685cff3f9873b5784fc511a87 (patch)
tree60fb20e60dbf1f2505cce84f6807f6cdde40e261 /django/newforms/fields.py
parent0162eac9e2cd317476dd4086c36caf138c96f6bc (diff)
[multi-db] Merged trunk to [4158]. Some tests still failing.
git-svn-id: http://code.djangoproject.com/svn/django/branches/multiple-db-support@4159 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/newforms/fields.py')
-rw-r--r--django/newforms/fields.py17
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):