summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Johnson <me@adamj.eu>2024-08-22 12:03:08 +0100
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2024-08-30 18:50:12 +0200
commit20d44abb41b3dde7f7edc556b784aef48c5ceddf (patch)
tree2ee02435e8e26354d4696ed8b99a17b16500f63c
parent884ce37479b9a250afc8ec02793291484adda6c3 (diff)
Fixed #35700 -- Added AlterModelTable and AlterModelTableComment reductions.
-rw-r--r--django/db/migrations/operations/models.py32
-rw-r--r--tests/migrations/test_optimizer.py40
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(
[