mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Refactored ValidationError to allow persisting error params and error codes as the exception bubbles up
This commit is contained in:
@@ -136,12 +136,8 @@ class Field(object):
|
||||
v(value)
|
||||
except ValidationError as e:
|
||||
if hasattr(e, 'code') and e.code in self.error_messages:
|
||||
message = self.error_messages[e.code]
|
||||
if e.params:
|
||||
message = message % e.params
|
||||
errors.append(message)
|
||||
else:
|
||||
errors.extend(e.messages)
|
||||
e.message = self.error_messages[e.code]
|
||||
errors.extend(e.error_list)
|
||||
if errors:
|
||||
raise ValidationError(errors)
|
||||
|
||||
@@ -974,7 +970,7 @@ class MultiValueField(Field):
|
||||
# Collect all validation errors in a single list, which we'll
|
||||
# raise at the end of clean(), rather than raising a single
|
||||
# exception for the first error we encounter.
|
||||
errors.extend(e.messages)
|
||||
errors.extend(e.error_list)
|
||||
if errors:
|
||||
raise ValidationError(errors)
|
||||
|
||||
|
||||
@@ -389,17 +389,11 @@ class BaseModelForm(BaseForm):
|
||||
if isinstance(field, InlineForeignKeyField):
|
||||
exclude.append(f_name)
|
||||
|
||||
# Clean the model instance's fields.
|
||||
try:
|
||||
self.instance.clean_fields(exclude=exclude)
|
||||
self.instance.full_clean(exclude=exclude,
|
||||
validate_unique=False)
|
||||
except ValidationError as e:
|
||||
self._update_errors(e.message_dict)
|
||||
|
||||
# Call the model instance's clean method.
|
||||
try:
|
||||
self.instance.clean()
|
||||
except ValidationError as e:
|
||||
self._update_errors({NON_FIELD_ERRORS: e.messages})
|
||||
self._update_errors(e)
|
||||
|
||||
# Validate uniqueness if needed.
|
||||
if self._validate_unique:
|
||||
@@ -414,7 +408,7 @@ class BaseModelForm(BaseForm):
|
||||
try:
|
||||
self.instance.validate_unique(exclude=exclude)
|
||||
except ValidationError as e:
|
||||
self._update_errors(e.message_dict)
|
||||
self._update_errors(e)
|
||||
|
||||
def save(self, commit=True):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user