#3896 closed (fixed)
pass value to field specific clean function
| Reported by: | Owned by: | nobody | |
|---|---|---|---|
| Component: | Forms | Version: | dev |
| Severity: | Keywords: | ||
| Cc: | tailofthesun@…, hv@… | Triage Stage: | Design decision needed |
| Has patch: | yes | Needs documentation: | yes |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
newforms has this bit of code in the full_clean function:
try:
value = field.clean(value)
self.clean_data[name] = value
if hasattr(self, 'clean_%s' % name):
value = getattr(self, 'clean_%s' % name)()
self.clean_data[name] = value
except ValidationError, e:
errors[name] = e.messages
Why is value not passed to the clean_%s function? Since it is required to return the accepted value, it is odd that it is forced to look it up. Basicly a dictionary read and assignment is required with no obvious gain. Logically I find it odd as well that clean_data contains values that are not cleaned fully yet.
Attachments (2)
Change History (10)
comment:1 by , 19 years ago
| Description: | modified (diff) |
|---|
comment:2 by , 18 years ago
| Triage Stage: | Unreviewed → Design decision needed |
|---|
Seems logical to me. I think it is certainly a bug that clean_data will retain the value even if clean_XXX raises a ValidationError. So even if it is decided that value shouldn't be passed to clean_XXX, we at least need to fix the clean_data problem.
by , 18 years ago
Pass the value to clean_XXX method and don't save to clean_data first.
comment:3 by , 18 years ago
| Has patch: | set |
|---|---|
| Needs documentation: | set |
| Needs tests: | set |
by , 18 years ago
| Attachment: | 3896.2.diff added |
|---|
Only the passing of value to clean_XXX method, with test fixes.
comment:4 by , 18 years ago
If this change goes in, then also consider removing the line specified in the first patch, which would fix #4391.
comment:5 by , 18 years ago
| Needs tests: | unset |
|---|
comment:6 by , 18 years ago
| Cc: | added |
|---|
comment:7 by , 18 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
it's really an implementation detail, but none the less fixed in [5346].
comment:8 by , 17 years ago
| Cc: | added |
|---|
(cleaning up code formatting in description)