diff options
| author | Jacob Walls <jacobtylerwalls@gmail.com> | 2024-12-29 01:13:48 -0800 |
|---|---|---|
| committer | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2025-08-04 10:14:01 +0200 |
| commit | 8914f4703cf03e2a01683c4ba00f5ae7d3fa449d (patch) | |
| tree | 5331d4fac059c893d16875710dc8539ff91bdc81 /tests/migrations | |
| parent | 079d31e698fa08dd92e2bc4f3fe9b4817a214419 (diff) | |
Fixed #35972 -- Fixed lookup crashes after subquery annotations.
Diffstat (limited to 'tests/migrations')
| -rw-r--r-- | tests/migrations/test_operations.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tests/migrations/test_operations.py b/tests/migrations/test_operations.py index 0bf16cb481..ec4b772c13 100644 --- a/tests/migrations/test_operations.py +++ b/tests/migrations/test_operations.py @@ -2340,6 +2340,36 @@ class OperationTests(OperationTestBase): pony = project_state.apps.get_model(app_label, "pony").objects.create(weight=1) self.assertEqual(pony.pink, 3) + @skipUnlessDBFeature("supports_expression_defaults") + def test_alter_field_add_database_default_func(self): + app_label = "test_alfladdf" + project_state = self.set_up_test_model(app_label) + operation = migrations.AlterField( + "Pony", "weight", models.FloatField(db_default=Pi()) + ) + new_state = project_state.clone() + operation.state_forwards(app_label, new_state) + old_weight = project_state.models[app_label, "pony"].fields["weight"] + self.assertIs(old_weight.default, models.NOT_PROVIDED) + self.assertIs(old_weight.db_default, models.NOT_PROVIDED) + new_weight = new_state.models[app_label, "pony"].fields["weight"] + self.assertIs(new_weight.default, models.NOT_PROVIDED) + self.assertIsInstance(new_weight.db_default, Pi) + pony = project_state.apps.get_model(app_label, "pony").objects.create(weight=1) + self.assertEqual(pony.weight, 1) + # Alter field. + with connection.schema_editor() as editor: + operation.database_forwards(app_label, editor, project_state, new_state) + pony = new_state.apps.get_model(app_label, "pony").objects.create() + if not connection.features.can_return_columns_from_insert: + pony.refresh_from_db() + self.assertAlmostEqual(pony.weight, math.pi) + # Reversal. + with connection.schema_editor() as editor: + operation.database_backwards(app_label, editor, new_state, project_state) + pony = project_state.apps.get_model(app_label, "pony").objects.create(weight=1) + self.assertEqual(pony.weight, 1) + def test_alter_field_change_nullable_to_database_default_not_null(self): """ The AlterField operation changing a null field to db_default. |
