summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorHasan Ramezani <hasan.r67@gmail.com>2021-09-16 10:34:10 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2021-09-21 13:35:47 +0200
commit668b990bf6da5232b16f979f59bb5d9b3af19e45 (patch)
tree889160f62d3229b656c31fe700b8857949920a86 /django
parent881b6bd135163424cf8aab520b23f8a3745cef8f (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.py6
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)