mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Fixed transaction handling for a number of operations on related objects.
Thanks Anssi and Aymeric for the reviews. Refs #21174.
This commit is contained in:
@@ -168,7 +168,19 @@ Backwards incompatible changes in 1.8
|
||||
deprecation timeline for a given feature, its removal may appear as a
|
||||
backwards incompatible change.
|
||||
|
||||
...
|
||||
* Some operations on related objects such as
|
||||
:meth:`~django.db.models.fields.related.RelatedManager.add()` or
|
||||
:ref:`direct assignment<direct-assignment>` ran multiple data modifying
|
||||
queries without wrapping them in transactions. To reduce the risk of data
|
||||
corruption, all data modifying methods that affect multiple related objects
|
||||
(i.e. ``add()``, ``remove()``, ``clear()``, and
|
||||
:ref:`direct assignment<direct-assignment>`) now perform their data modifying
|
||||
queries from within a transaction, provided your database supports
|
||||
transactions.
|
||||
|
||||
This has one backwards incompatible side effect, signal handlers triggered
|
||||
from these methods are now executed within the method's transaction and
|
||||
any exception in a signal handler will prevent the whole operation.
|
||||
|
||||
Miscellaneous
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
Reference in New Issue
Block a user