summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorEvan Grim <evan@mirgnave.com>2017-07-11 11:40:18 -0500
committerTim Graham <timograham@gmail.com>2017-08-10 19:21:14 -0400
commit7937cc16f5fafb33a53b9a9ff286229fcc5ba67f (patch)
tree27f5226e663b8f69efea01ee54a533b9c0e7161e /django
parent5893eaddf4c866c2cd3f53660a3ffaf4d9db5dfa (diff)
Fixed #28386 -- Made operations within non-atomic migrations honor the operation's atomic flag when migrating backwards.
Diffstat (limited to 'django')
-rw-r--r--django/db/migrations/migration.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/django/db/migrations/migration.py b/django/db/migrations/migration.py
index 3a41703ef8..ffe0b1fb3d 100644
--- a/django/db/migrations/migration.py
+++ b/django/db/migrations/migration.py
@@ -162,8 +162,10 @@ class Migration:
schema_editor.collected_sql.append("--")
if not operation.reduces_to_sql:
continue
- if not schema_editor.connection.features.can_rollback_ddl and operation.atomic:
- # We're forcing a transaction on a non-transactional-DDL backend
+ atomic_operation = operation.atomic or (self.atomic and operation.atomic is not False)
+ if not schema_editor.atomic_migration and atomic_operation:
+ # Force a transaction on a non-transactional-DDL backend or an
+ # atomic operation inside a non-atomic migration.
with atomic(schema_editor.connection.alias):
operation.database_backwards(self.app_label, schema_editor, from_state, to_state)
else: