diff options
| author | Hasan Ramezani <hasan.r67@gmail.com> | 2021-09-16 10:34:10 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2021-09-21 13:35:47 +0200 |
| commit | 668b990bf6da5232b16f979f59bb5d9b3af19e45 (patch) | |
| tree | 889160f62d3229b656c31fe700b8857949920a86 /django | |
| parent | 881b6bd135163424cf8aab520b23f8a3745cef8f (diff) | |
[4.0.x] Fixed #33111 -- Fixed passing object to ModelAdmin.get_inlines() when editing in admin change view.
ModelAdmin.get_inlines() should get an unmutated object when creating
formsets during POST request.
Backport of 2f0f30f973363a59c20f204f9351724fb2ce7327 from main
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/admin/options.py | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py index 1e5fab917e..7b2b893c10 100644 --- a/django/contrib/admin/options.py +++ b/django/contrib/admin/options.py @@ -1585,12 +1585,16 @@ class ModelAdmin(BaseModelAdmin): ) if request.method == 'POST': form = ModelForm(request.POST, request.FILES, instance=obj) + formsets, inline_instances = self._create_formsets( + request, + form.instance if add else obj, + change=not add, + ) form_validated = form.is_valid() if form_validated: new_object = self.save_form(request, form, change=not add) else: new_object = form.instance - formsets, inline_instances = self._create_formsets(request, new_object, change=not add) if all_valid(formsets) and form_validated: self.save_model(request, new_object, form, not add) self.save_related(request, form, formsets, not add) |
