1
0
mirror of https://github.com/django/django.git synced 2025-10-26 07:06:08 +00:00

Fixed #35972 -- Fixed lookup crashes after subquery annotations.

This commit is contained in:
Jacob Walls
2024-12-29 01:13:48 -08:00
committed by Sarah Boyce
parent 079d31e698
commit 8914f4703c
11 changed files with 128 additions and 23 deletions

View File

@@ -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.