diff options
| author | Paolo Melchiorre <paolo@melchiorre.org> | 2023-09-22 11:27:40 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-09-22 21:37:01 +0200 |
| commit | 81663cc4ca8f7ac0eac33cbb6986462330e75bb1 (patch) | |
| tree | 269c3cf297b48edb7a11ed2e3f051f7799ebcca0 /tests | |
| parent | 7683c8635119b55eb04b18ab14b810582a4e8972 (diff) | |
[5.0.x] Fixed #34861 -- Fixed crash when adding GeneratedField with some expressions.
Co-authored-by: Simon Charette <charette.s@gmail.com>
Backport of 574ee4023e15cfb195833edfbaed353f8021c62f from main
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/schema/tests.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/tests/schema/tests.py b/tests/schema/tests.py index 9f620331bc..cc92e250a1 100644 --- a/tests/schema/tests.py +++ b/tests/schema/tests.py @@ -32,6 +32,7 @@ from django.db.models import ( FloatField, ForeignKey, ForeignObject, + GeneratedField, Index, IntegerField, JSONField, @@ -50,7 +51,7 @@ from django.db.models import ( UUIDField, Value, ) -from django.db.models.fields.json import KeyTextTransform +from django.db.models.fields.json import KT, KeyTextTransform from django.db.models.functions import Abs, Cast, Collate, Lower, Random, Upper from django.db.models.indexes import IndexExpression from django.db.transaction import TransactionManagementError, atomic @@ -817,6 +818,24 @@ class SchemaTests(TransactionTestCase): self.assertEqual(columns["bits"][0], "TextField") @isolate_apps("schema") + @skipUnlessDBFeature("supports_json_field", "supports_stored_generated_columns") + def test_add_generated_field_with_kt_model(self): + class GeneratedFieldKTModel(Model): + data = JSONField() + status = GeneratedField(expression=KT("data__status"), db_persist=True) + + class Meta: + app_label = "schema" + + with CaptureQueriesContext(connection) as ctx: + with connection.schema_editor() as editor: + editor.create_model(GeneratedFieldKTModel) + self.assertIs( + any("None" in query["sql"] for query in ctx.captured_queries), + False, + ) + + @isolate_apps("schema") def test_add_auto_field(self): class AddAutoFieldModel(Model): name = CharField(max_length=255, primary_key=True) |
