#20872 closed Bug (fixed)
Bad error message if INITIAL_FORMS/TOTAL_FORMS > MAX_NUM_FORMS
Reported by: | Russell Keith-Magee | Owned by: | mburst |
---|---|---|---|
Component: | Forms | Version: | 1.5 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Formset handling currently enforces a MAX_NUM_FORMS check on incoming form data. However, there is no checking or validation that MAX_NUM_FORMS is actually equal to or greater than INITIAL_FORMS/TOTAL_FORMS.
As a result, it's possible to construct and display a formset, but then have that formset fail (with a "list index out of range error") on form submission.
This manifested for me as the following: A model in the admin with inlines; the inline was filled with 2023 inline objects, and the default MAX_NUM_FORMS (1000 was in use. The page takes a long time to load, but it *does* load; when you hit submit, you get the "list index out of range" error as a 500 page, with no suggestion of the underlying problem.
I haven't tested, but AFAICT, the same problem will manifest with a lot less data if you set MAX_NUM_FORMS to a lower value.
Change History (3)
comment:1 by , 11 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:2 by , 11 years ago
Resolution: | → worksforme |
---|---|
Status: | assigned → closed |
comment:3 by , 11 years ago
Resolution: | worksforme → fixed |
---|
This has been fixed with commit https://github.com/django/django/commit/f9ab543720532400e8b0d490cdbe67ea09ae9c17. total_form_count can't be larger than absolute_max.