diff options
| author | Laurent Tramoy <laurent.tramoy@gitguardian.com> | 2023-02-24 13:48:46 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-02-24 13:59:42 +0100 |
| commit | 2276ec8c21655b05bb44e14e236b499aa5d01f5b (patch) | |
| tree | 3b3953785ad2d5fde1ef6792b7a962552f46f09b | |
| parent | f9fe062de5fc0896d6bbbf3f260b5c44473b3c77 (diff) | |
Fixed #34366 -- Reduced AlterField operations when optimizing migrations.
| -rw-r--r-- | django/db/migrations/operations/fields.py | 6 | ||||
| -rw-r--r-- | tests/migrations/test_optimizer.py | 18 |
2 files changed, 15 insertions, 9 deletions
diff --git a/django/db/migrations/operations/fields.py b/django/db/migrations/operations/fields.py index cd3aab43ad..fc5640bea9 100644 --- a/django/db/migrations/operations/fields.py +++ b/django/db/migrations/operations/fields.py @@ -247,9 +247,9 @@ class AlterField(FieldOperation): return "alter_%s_%s" % (self.model_name_lower, self.name_lower) def reduce(self, operation, app_label): - if isinstance(operation, RemoveField) and self.is_same_field_operation( - operation - ): + if isinstance( + operation, (AlterField, RemoveField) + ) and self.is_same_field_operation(operation): return [operation] elif ( isinstance(operation, RenameField) diff --git a/tests/migrations/test_optimizer.py b/tests/migrations/test_optimizer.py index 6485009eb4..8cd4c67fbd 100644 --- a/tests/migrations/test_optimizer.py +++ b/tests/migrations/test_optimizer.py @@ -221,10 +221,10 @@ class OptimizerTests(SimpleTestCase): migrations.AlterOrderWithRespectTo("Foo", "a") ) - def _test_alter_alter_model(self, alter_foo, alter_bar): + def _test_alter_alter(self, alter_foo, alter_bar): """ Two AlterUniqueTogether/AlterIndexTogether/AlterOrderWithRespectTo - should collapse into the second. + /AlterField should collapse into the second. """ self.assertOptimizesTo( [ @@ -237,29 +237,35 @@ class OptimizerTests(SimpleTestCase): ) def test_alter_alter_table_model(self): - self._test_alter_alter_model( + self._test_alter_alter( migrations.AlterModelTable("Foo", "a"), migrations.AlterModelTable("Foo", "b"), ) def test_alter_alter_unique_model(self): - self._test_alter_alter_model( + self._test_alter_alter( migrations.AlterUniqueTogether("Foo", [["a", "b"]]), migrations.AlterUniqueTogether("Foo", [["a", "c"]]), ) def test_alter_alter_index_model(self): - self._test_alter_alter_model( + self._test_alter_alter( migrations.AlterIndexTogether("Foo", [["a", "b"]]), migrations.AlterIndexTogether("Foo", [["a", "c"]]), ) def test_alter_alter_owrt_model(self): - self._test_alter_alter_model( + self._test_alter_alter( migrations.AlterOrderWithRespectTo("Foo", "a"), migrations.AlterOrderWithRespectTo("Foo", "b"), ) + def test_alter_alter_field(self): + self._test_alter_alter( + migrations.AlterField("Foo", "name", models.IntegerField()), + migrations.AlterField("Foo", "name", models.IntegerField(help_text="help")), + ) + def test_optimize_through_create(self): """ We should be able to optimize away create/delete through a create or |
