diff options
| author | Adam Johnson <me@adamj.eu> | 2024-08-22 12:03:08 +0100 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2024-08-30 18:50:12 +0200 |
| commit | 20d44abb41b3dde7f7edc556b784aef48c5ceddf (patch) | |
| tree | 2ee02435e8e26354d4696ed8b99a17b16500f63c | |
| parent | 884ce37479b9a250afc8ec02793291484adda6c3 (diff) | |
Fixed #35700 -- Added AlterModelTable and AlterModelTableComment reductions.
| -rw-r--r-- | django/db/migrations/operations/models.py | 32 | ||||
| -rw-r--r-- | tests/migrations/test_optimizer.py | 40 |
2 files changed, 72 insertions, 0 deletions
diff --git a/django/db/migrations/operations/models.py b/django/db/migrations/operations/models.py index 9aad9c809e..c8f7a2627a 100644 --- a/django/db/migrations/operations/models.py +++ b/django/db/migrations/operations/models.py @@ -185,6 +185,38 @@ class CreateModel(ModelOperation): ), ] elif ( + isinstance(operation, AlterModelTable) + and self.name_lower == operation.name_lower + ): + return [ + CreateModel( + self.name, + fields=self.fields, + options={ + **self.options, + "db_table": operation.table, + }, + bases=self.bases, + managers=self.managers, + ), + ] + elif ( + isinstance(operation, AlterModelTableComment) + and self.name_lower == operation.name_lower + ): + return [ + CreateModel( + self.name, + fields=self.fields, + options={ + **self.options, + "db_table_comment": operation.table_comment, + }, + bases=self.bases, + managers=self.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 2acbc7f09f..3ed30102bf 100644 --- a/tests/migrations/test_optimizer.py +++ b/tests/migrations/test_optimizer.py @@ -154,6 +154,46 @@ class OptimizerTests(SimpleTestCase): ], ) + def test_create_alter_model_table(self): + self.assertOptimizesTo( + [ + migrations.CreateModel("Foo", fields=[]), + migrations.AlterModelTable( + name="foo", + table="foo", + ), + ], + [ + migrations.CreateModel( + "Foo", + fields=[], + options={ + "db_table": "foo", + }, + ), + ], + ) + + def test_create_alter_model_table_comment(self): + self.assertOptimizesTo( + [ + migrations.CreateModel("Foo", fields=[]), + migrations.AlterModelTableComment( + name="foo", + table_comment="A lovely table.", + ), + ], + [ + migrations.CreateModel( + "Foo", + fields=[], + options={ + "db_table_comment": "A lovely table.", + }, + ), + ], + ) + def test_create_model_and_remove_model_options(self): self.assertOptimizesTo( [ |
