Opened 102 minutes ago
Last modified 102 minutes ago
#36913 assigned Cleanup/optimization
Optimise ChoiceField / MultipleChoiceField handling of duplicate submissions
| Reported by: | Jake Howard | Owned by: | Sarah Boyce |
|---|---|---|---|
| Component: | Forms | Version: | 6.0 |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
When a ChoiceField / MultipleChoiceField has 5 possible choices, but the form submits 25 values, the choices values are compared once per submitted value. If the submitted values are duplicates, the validation doesn't terminate early, but can still spend a lot of time unnecessarily validating values. This can be very slow when large (~30k) numbers of values are submitted.
A suggested fix is to only validate the unique submitted values (for example for val in set(value)).
This issue was reported to the Security Team, but deemed not a security issue due to the minimal impact when given reasonable input (in the bounds of the security policy).
Note that validation that submissions (and choices) are unique is being handled in a separate feature request: https://github.com/django/new-features/issues/121