#24008 closed Bug (fixed)
ValidationError crashes if initialised with a list that includes a ValidationError instance initialised with a dict.
Description (last modified by ) ¶
According to the documentation, ValidationError can be initialised with a list of ValidationError instances. However, if the list includes a ValidationError that was initialised with a dictionary then it crashes with the following error: 'ValidationError' object has no attribute 'error_list'.
This bug would occur if someone wanted to raise a ValidationError with a set of field errors together with one or more non-field errors for example.
For example:
>>> from django.core.exceptions import ValidationError >>> ValidationError([ValidationError({'age', 'age cannot be negative'}), ValidationError('Some other error')])
The problem is caused because when a ValidationError instance is initialised with a dictionary, its error_list attribute is not set (instead error_dict is set) but a ValidationError that is initialised with a list tries to compile a flattened list of all errors using this attribute from each list element. Either ValidationError should be modified to accept a mixture of field and non-field errors (appears to me to be the best solution) or the documentation and error message should be changed to make usage clear.
Related to https://code.djangoproject.com/ticket/23976
Change History (6)
comment:1 by , 10 years ago
Component: | Uncategorized → Core (Other) |
---|---|
Description: | modified (diff) |
Triage Stage: | Unreviewed → Accepted |
Type: | Uncategorized → Bug |
Version: | 1.6 → 1.7 |
comment:2 by , 10 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:3 by , 10 years ago
Has patch: | set |
---|---|
Patch needs improvement: | set |
comment:4 by , 10 years ago
Patch needs improvement: | unset |
---|---|
Triage Stage: | Accepted → Ready for checkin |
comment:5 by , 10 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Created pull request: https://github.com/django/django/pull/3769