summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/newforms/fields.py5
-rw-r--r--tests/regressiontests/forms/tests.py12
2 files changed, 16 insertions, 1 deletions
diff --git a/django/newforms/fields.py b/django/newforms/fields.py
index 24849bdbcf..af2533cec5 100644
--- a/django/newforms/fields.py
+++ b/django/newforms/fields.py
@@ -77,7 +77,10 @@ class CharField(Field):
def clean(self, value):
"Validates max_length and min_length. Returns a Unicode object."
Field.clean(self, value)
- if value in EMPTY_VALUES: value = u''
+ if value in EMPTY_VALUES:
+ value = u''
+ if not self.required:
+ return value
value = smart_unicode(value)
if self.max_length is not None and len(value) > self.max_length:
raise ValidationError(gettext(u'Ensure this value has at most %d characters.') % self.max_length)
diff --git a/tests/regressiontests/forms/tests.py b/tests/regressiontests/forms/tests.py
index c75cedab14..e450561bd0 100644
--- a/tests/regressiontests/forms/tests.py
+++ b/tests/regressiontests/forms/tests.py
@@ -687,9 +687,21 @@ ValidationError: [u'Ensure this value has at most 10 characters.']
CharField accepts an optional min_length parameter:
>>> f = CharField(min_length=10, required=False)
>>> f.clean('')
+u''
+>>> f.clean('12345')
Traceback (most recent call last):
...
ValidationError: [u'Ensure this value has at least 10 characters.']
+>>> f.clean('1234567890')
+u'1234567890'
+>>> f.clean('1234567890a')
+u'1234567890a'
+
+>>> f = CharField(min_length=10, required=True)
+>>> f.clean('')
+Traceback (most recent call last):
+...
+ValidationError: [u'This field is required.']
>>> f.clean('12345')
Traceback (most recent call last):
...