Fixed #3038 -- newforms: RegexField no longer validates empty input for required=False. Thanks for reporting, Thomas Steinacher
git-svn-id: http://code.djangoproject.com/svn/django/trunk@4111 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
d1757daf0f
commit
2e4ff8ee0c
|
@ -170,7 +170,7 @@ class RegexField(Field):
|
||||||
Field.clean(self, value)
|
Field.clean(self, value)
|
||||||
if value in EMPTY_VALUES: value = u''
|
if value in EMPTY_VALUES: value = u''
|
||||||
value = smart_unicode(value)
|
value = smart_unicode(value)
|
||||||
if not self.regex.search(value):
|
if (value or self.required) and not self.regex.search(value):
|
||||||
raise ValidationError(self.error_message)
|
raise ValidationError(self.error_message)
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
|
|
@ -484,13 +484,13 @@ u'1'
|
||||||
u'hello'
|
u'hello'
|
||||||
>>> f.clean(None)
|
>>> f.clean(None)
|
||||||
u''
|
u''
|
||||||
|
>>> f.clean('')
|
||||||
|
u''
|
||||||
>>> f.clean([1, 2, 3])
|
>>> f.clean([1, 2, 3])
|
||||||
u'[1, 2, 3]'
|
u'[1, 2, 3]'
|
||||||
|
|
||||||
CharField accepts an optional max_length parameter:
|
CharField accepts an optional max_length parameter:
|
||||||
>>> f = CharField(max_length=10, required=False)
|
>>> f = CharField(max_length=10, required=False)
|
||||||
>>> f.clean('')
|
|
||||||
u''
|
|
||||||
>>> f.clean('12345')
|
>>> f.clean('12345')
|
||||||
u'12345'
|
u'12345'
|
||||||
>>> f.clean('1234567890')
|
>>> f.clean('1234567890')
|
||||||
|
@ -700,6 +700,22 @@ ValidationError: [u'Enter a valid value.']
|
||||||
Traceback (most recent call last):
|
Traceback (most recent call last):
|
||||||
...
|
...
|
||||||
ValidationError: [u'Enter a valid value.']
|
ValidationError: [u'Enter a valid value.']
|
||||||
|
>>> f.clean('')
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
ValidationError: [u'This field is required.']
|
||||||
|
|
||||||
|
>>> f = RegexField('^\d[A-F]\d$', required=False)
|
||||||
|
>>> f.clean('2A2')
|
||||||
|
u'2A2'
|
||||||
|
>>> f.clean('3F3')
|
||||||
|
u'3F3'
|
||||||
|
>>> f.clean('3G3')
|
||||||
|
Traceback (most recent call last):
|
||||||
|
...
|
||||||
|
ValidationError: [u'Enter a valid value.']
|
||||||
|
>>> f.clean('')
|
||||||
|
u''
|
||||||
|
|
||||||
Alternatively, RegexField can take a compiled regular expression:
|
Alternatively, RegexField can take a compiled regular expression:
|
||||||
>>> f = RegexField(re.compile('^\d[A-F]\d$'))
|
>>> f = RegexField(re.compile('^\d[A-F]\d$'))
|
||||||
|
|
Loading…
Reference in New Issue