Fixed #35700 -- Added AlterModelTable and AlterModelTableComment reductions.

This commit is contained in:
Adam Johnson 2024-08-22 12:03:08 +01:00 committed by Sarah Boyce
parent 884ce37479
commit 20d44abb41
2 changed files with 72 additions and 0 deletions

View File

@ -184,6 +184,38 @@ class CreateModel(ModelOperation):
managers=operation.managers,
),
]
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

View File

@ -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(
[