From 425c5e40eae90bd3ee3633011ef97edb26858c94 Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Mon, 21 Sep 2015 20:53:10 +0200 Subject: [1.8.x] Fixed #24921 -- set_autocommit(False) + ORM queries. This commits lifts the restriction that the outermost atomic block must be declared with savepoint=False. This restriction was overly cautious. The logic that makes it safe not to create savepoints for inner blocks also applies to the outermost block when autocommit is disabled and a transaction is already active. This makes it possible to use the ORM after set_autocommit(False). Previously it didn't work because ORM write operations are protected with atomic(savepoint=False). Backport of 91e9f1c from master --- docs/releases/1.8.5.txt | 4 ++++ docs/topics/db/transactions.txt | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'docs') diff --git a/docs/releases/1.8.5.txt b/docs/releases/1.8.5.txt index 9cdd802057..d412c4b653 100644 --- a/docs/releases/1.8.5.txt +++ b/docs/releases/1.8.5.txt @@ -46,3 +46,7 @@ Bugfixes * Readded inline foreign keys to form instances when validating model formsets (:ticket:`25431`). + +* Allowed using ORM write methods after disabling autocommit with + :func:`set_autocommit(False) ` + (:ticket:`24921`). diff --git a/docs/topics/db/transactions.txt b/docs/topics/db/transactions.txt index 0e3c94f0c9..284cdb388f 100644 --- a/docs/topics/db/transactions.txt +++ b/docs/topics/db/transactions.txt @@ -200,8 +200,12 @@ Django provides a single API to control database transactions. the error handling described above. You may use ``atomic`` when autocommit is turned off. It will only use - savepoints, even for the outermost block, and it will raise an exception - if the outermost block is declared with ``savepoint=False``. + savepoints, even for the outermost block. + + .. versionchanged:: 1.8.5 + + Previously the outermost atomic block couldn't be declared with + ``savepoint=False`` when autocommit was turned off. .. admonition:: Performance considerations -- cgit v1.3