summaryrefslogtreecommitdiff
path: root/django/contrib/admin/options.py
diff options
context:
space:
mode:
authorShubh1815 <shubhparmar14@gmail.com>2022-09-24 15:42:28 +0530
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2022-10-06 20:44:07 +0200
commit7a39a691e1e3fe13588c8885a222eaa6a4648d01 (patch)
treecb85748e1c27ae2acaa3c2e3db5585f97f2641e0 /django/contrib/admin/options.py
parentc6350d594c359151ee17b0c4f354bb44f28ff69e (diff)
Fixed #32603 -- Made ModelAdmin.list_editable use transactions.
Diffstat (limited to 'django/contrib/admin/options.py')
-rw-r--r--django/contrib/admin/options.py20
1 files changed, 11 insertions, 9 deletions
diff --git a/django/contrib/admin/options.py b/django/contrib/admin/options.py
index 5f07a4208a..215df9a059 100644
--- a/django/contrib/admin/options.py
+++ b/django/contrib/admin/options.py
@@ -2011,15 +2011,17 @@ class ModelAdmin(BaseModelAdmin):
)
if formset.is_valid():
changecount = 0
- for form in formset.forms:
- if form.has_changed():
- obj = self.save_form(request, form, change=True)
- self.save_model(request, obj, form, change=True)
- self.save_related(request, form, formsets=[], change=True)
- change_msg = self.construct_change_message(request, form, None)
- self.log_change(request, obj, change_msg)
- changecount += 1
-
+ with transaction.atomic(using=router.db_for_write(self.model)):
+ for form in formset.forms:
+ if form.has_changed():
+ obj = self.save_form(request, form, change=True)
+ self.save_model(request, obj, form, change=True)
+ self.save_related(request, form, formsets=[], change=True)
+ change_msg = self.construct_change_message(
+ request, form, None
+ )
+ self.log_change(request, obj, change_msg)
+ changecount += 1
if changecount:
msg = ngettext(
"%(count)s %(name)s was changed successfully.",