diff options
| author | Adam Johnson <me@adamj.eu> | 2022-03-11 06:03:51 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-11 07:03:51 +0100 |
| commit | 8f7cda083154a2e97e07115a66ee28be27200348 (patch) | |
| tree | 8ebe8ec9a2bb7849ea731131a7a6f36f56cf9618 | |
| parent | 71017a68a6e86b501592e7daf68be3ef4c4c28f2 (diff) | |
Fixed #33572 -- Implemented CreateModel/AlterModelManagers reduction.
| -rw-r--r-- | django/db/migrations/operations/models.py | 13 | ||||
| -rw-r--r-- | tests/migrations/test_optimizer.py | 24 |
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( [ |
