From 5b1d0a6be06a14d130b2b7fa305dbc9e2a393761 Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Sun, 12 Nov 2023 20:34:10 +0100 Subject: [PATCH] [5.0.x] Reverted "Refs #30446, Refs #34944 -- Fixed crash when adding GeneratedField with string Value()." This reverts commit 8b1acc0440418ac8f45ba48e2dfcf5126c83341b. Backport of de4884b114534f43c49cf8c5b7f10181e737f4e9 from main --- django/db/models/expressions.py | 2 +- tests/expressions/tests.py | 1 - tests/schema/tests.py | 17 ----------------- 3 files changed, 1 insertion(+), 19 deletions(-) diff --git a/django/db/models/expressions.py b/django/db/models/expressions.py index d38093bfed..b38f8f64ef 100644 --- a/django/db/models/expressions.py +++ b/django/db/models/expressions.py @@ -1081,7 +1081,7 @@ class Value(SQLiteNumericMixin, Expression): def _resolve_output_field(self): if isinstance(self.value, str): - return fields.CharField(max_length=len(self.value)) + return fields.CharField() if isinstance(self.value, bool): return fields.BooleanField() if isinstance(self.value, int): diff --git a/tests/expressions/tests.py b/tests/expressions/tests.py index 9743d024b1..073e2e9258 100644 --- a/tests/expressions/tests.py +++ b/tests/expressions/tests.py @@ -2227,7 +2227,6 @@ class ValueTests(TestCase): with self.subTest(type=type(value)): expr = Value(value) self.assertIsInstance(expr.output_field, output_field_type) - self.assertEqual(Value("foo").output_field.max_length, 3) def test_resolve_output_field_failure(self): msg = "Cannot resolve expression type, unknown output_field" diff --git a/tests/schema/tests.py b/tests/schema/tests.py index 5488013bfc..e1e3c7d3c6 100644 --- a/tests/schema/tests.py +++ b/tests/schema/tests.py @@ -848,23 +848,6 @@ class SchemaTests(TransactionTestCase): False, ) - @isolate_apps("schema") - @skipUnlessDBFeature("supports_stored_generated_columns") - def test_add_generated_field_with_string_value(self): - class GeneratedFieldStringValueModel(Model): - value = GeneratedField(expression=Value("static string"), db_persist=True) - - class Meta: - app_label = "schema" - - with CaptureQueriesContext(connection) as ctx: - with connection.schema_editor() as editor: - editor.create_model(GeneratedFieldStringValueModel) - self.assertIs( - any("None" in query["sql"] for query in ctx.captured_queries), - False, - ) - @isolate_apps("schema") @skipUnlessDBFeature("supports_stored_generated_columns") def test_add_generated_field_with_output_field(self):