summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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(
[