summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Johnson <me@adamj.eu>2022-03-11 06:03:51 +0000
committerGitHub <noreply@github.com>2022-03-11 07:03:51 +0100
commit8f7cda083154a2e97e07115a66ee28be27200348 (patch)
tree8ebe8ec9a2bb7849ea731131a7a6f36f56cf9618
parent71017a68a6e86b501592e7daf68be3ef4c4c28f2 (diff)
Fixed #33572 -- Implemented CreateModel/AlterModelManagers reduction.
-rw-r--r--django/db/migrations/operations/models.py13
-rw-r--r--tests/migrations/test_optimizer.py24
2 files changed, 37 insertions, 0 deletions
diff --git a/django/db/migrations/operations/models.py b/django/db/migrations/operations/models.py
index 90fc31bee5..8a5c04393b 100644
--- a/django/db/migrations/operations/models.py
+++ b/django/db/migrations/operations/models.py
@@ -171,6 +171,19 @@ class CreateModel(ModelOperation):
),
]
elif (
+ isinstance(operation, AlterModelManagers)
+ and self.name_lower == operation.name_lower
+ ):
+ return [
+ CreateModel(
+ self.name,
+ fields=self.fields,
+ options=self.options,
+ bases=self.bases,
+ managers=operation.managers,
+ ),
+ ]
+ elif (
isinstance(operation, AlterTogetherOptionOperation)
and self.name_lower == operation.name_lower
):
diff --git a/tests/migrations/test_optimizer.py b/tests/migrations/test_optimizer.py
index 59dd401a3c..6bde378cd9 100644
--- a/tests/migrations/test_optimizer.py
+++ b/tests/migrations/test_optimizer.py
@@ -129,6 +129,30 @@ class OptimizerTests(SimpleTestCase):
],
)
+ def test_create_alter_model_managers(self):
+ self.assertOptimizesTo(
+ [
+ migrations.CreateModel("Foo", fields=[]),
+ migrations.AlterModelManagers(
+ name="Foo",
+ managers=[
+ ("objects", models.Manager()),
+ ("things", models.Manager()),
+ ],
+ ),
+ ],
+ [
+ migrations.CreateModel(
+ "Foo",
+ fields=[],
+ managers=[
+ ("objects", models.Manager()),
+ ("things", models.Manager()),
+ ],
+ ),
+ ],
+ )
+
def test_create_model_and_remove_model_options(self):
self.assertOptimizesTo(
[