diff --git a/django/newforms/forms.py b/django/newforms/forms.py
index f04e04926a..f58ce2c563 100644
--- a/django/newforms/forms.py
+++ b/django/newforms/forms.py
@@ -56,19 +56,20 @@ class Form(object):
raise KeyError('Key %r not found in Form' % name)
return BoundField(self, field, name)
- def errors(self):
+ def _errors(self):
"Returns an ErrorDict for self.data"
if self.__errors is None:
self.full_clean()
return self.__errors
+ errors = property(_errors)
def is_valid(self):
"""
Returns True if the form has no errors. Otherwise, False. This exists
solely for convenience, so client code can use positive logic rather
- than confusing negative logic ("if not form.errors()").
+ than confusing negative logic ("if not form.errors").
"""
- return not bool(self.errors())
+ return not bool(self.errors)
def as_table(self):
"Returns this form rendered as HTML
s -- excluding the
."
@@ -81,9 +82,9 @@ class Form(object):
def as_table_with_errors(self):
"Returns this form rendered as HTML
s, with errors."
output = []
- if self.errors().get(NON_FIELD_ERRORS):
+ if self.errors.get(NON_FIELD_ERRORS):
# Errors not corresponding to a particular field are displayed at the top.
- output.append(u'
%s
' % u'\n'.join([u'
%s
' % e for e in self.errors()[NON_FIELD_ERRORS]]))
+ output.append(u'
%s
' % u'\n'.join([u'
%s
' % e for e in self.errors[NON_FIELD_ERRORS]]))
for name, field in self.fields.items():
bf = BoundField(self, field, name)
if bf.errors:
@@ -94,9 +95,9 @@ class Form(object):
def as_ul_with_errors(self):
"Returns this form rendered as HTML
s, with errors."
output = []
- if self.errors().get(NON_FIELD_ERRORS):
+ if self.errors.get(NON_FIELD_ERRORS):
# Errors not corresponding to a particular field are displayed at the top.
- output.append(u'
%s
' % u'\n'.join([u'
%s
' % e for e in self.errors()[NON_FIELD_ERRORS]]))
+ output.append(u'
%s
' % u'\n'.join([u'
%s
' % e for e in self.errors[NON_FIELD_ERRORS]]))
for name, field in self.fields.items():
bf = BoundField(self, field, name)
line = u'
'
@@ -162,7 +163,7 @@ class BoundField(object):
if there are none.
"""
try:
- return self._form.errors()[self._name]
+ return self._form.errors[self._name]
except KeyError:
return ErrorList()
errors = property(_errors)
diff --git a/tests/regressiontests/forms/tests.py b/tests/regressiontests/forms/tests.py
index e588b6572b..3d7543badd 100644
--- a/tests/regressiontests/forms/tests.py
+++ b/tests/regressiontests/forms/tests.py
@@ -1163,13 +1163,13 @@ u''
'
>>> p = Person({'last_name': u'Lennon'})
->>> p.errors()
+>>> p.errors
{'first_name': [u'This field is required.'], 'birthday': [u'This field is required.']}
>>> p.is_valid()
False
->>> p.errors().as_ul()
+>>> p.errors.as_ul()
u'
first_name
This field is required.
birthday
This field is required.
'
->>> print p.errors().as_text()
+>>> print p.errors.as_text()
* first_name
* This field is required.
* birthday
@@ -1385,13 +1385,13 @@ Field.clean(), the clean_XXX() method should return the cleaned value:
... raise ValidationError(u'Please make sure your passwords match.')
... return self.clean_data['password2']
>>> f = UserRegistration()
->>> f.errors()
+>>> f.errors
{'username': [u'This field is required.'], 'password1': [u'This field is required.'], 'password2': [u'This field is required.']}
>>> f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'bar'})
->>> f.errors()
+>>> f.errors
{'password2': [u'Please make sure your passwords match.']}
>>> f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'foo'})
->>> f.errors()
+>>> f.errors
{}
>>> f.clean()
{'username': u'adrian', 'password1': u'foo', 'password2': u'foo'}
@@ -1414,10 +1414,10 @@ Form.clean() still needs to return a dictionary of all clean data:
Username:
Password1:
Password2:
->>> f.errors()
+>>> f.errors
{'username': [u'This field is required.'], 'password1': [u'This field is required.'], 'password2': [u'This field is required.']}
>>> f = UserRegistration({'username': 'adrian', 'password1': 'foo', 'password2': 'bar'})
->>> f.errors()
+>>> f.errors
{'__all__': [u'Please make sure your passwords match.']}
>>> print f.as_table()
Username:
@@ -1434,7 +1434,7 @@ Form.clean() still needs to return a dictionary of all clean data: