#28159 closed Bug (fixed)
Using InlineFormset.save_as_new crashes in Django 1.11
| Reported by: | Alexander Kavanaugh | Owned by: | nobody |
|---|---|---|---|
| Component: | Forms | Version: | 1.11 |
| Severity: | Release blocker | Keywords: | inlineformset, save_as_new |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description (last modified by )
Django 1.11 marks multipart POST data as immutable: 4a246a02bdcbc13b15480c014f51cb0682af7c1e (#17235) . This causes an issue with the private save_as_new feature in InlineFormsets: the set code in the conditional block in BaseInlineFormSet._construct_form() now raises AttributeError because the data it's attempting to change is marked as immutable.
To restore previous behavior, this pull request turns off the immutability flag on the form data while the save_as_new functionality runs and turns immutability back on when the mutation code is complete.
Note that the mutable flag isn't set if there is no data, hence the hasattr code.
Change History (4)
comment:1 by , 8 years ago
| Description: | modified (diff) |
|---|---|
| Needs tests: | set |
| Severity: | Normal → Release blocker |
| Summary: | Fix issues with InlineFormset.save_as_new in Django 1.11 → Using InlineFormset.save_as_new crashes in Django 1.11 |
| Triage Stage: | Unreviewed → Accepted |
comment:2 by , 8 years ago
| Needs tests: | unset |
|---|
I added a test to the PR.