diff options
| author | Sarah Boyce <42296566+sarahboyce@users.noreply.github.com> | 2023-12-06 23:19:09 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-12-08 09:46:11 +0100 |
| commit | b287af5dc954628d4b336aefc5027b2edceee64b (patch) | |
| tree | c5ab9d66dbc5d343dbeb684594d61558693a9295 /tests/model_fields | |
| parent | eeb2119985d9879b1d9ac3730ea0b53c0c019221 (diff) | |
Fixed #35019 -- Fixed save() on models with both GeneratedFields and ForeignKeys.
Thanks Deb Kumar Das for the report.
Regression in f333e3513e8bdf5ffeb6eeb63021c230082e6f95.
Diffstat (limited to 'tests/model_fields')
| -rw-r--r-- | tests/model_fields/models.py | 2 | ||||
| -rw-r--r-- | tests/model_fields/test_generatedfield.py | 15 |
2 files changed, 17 insertions, 0 deletions
diff --git a/tests/model_fields/models.py b/tests/model_fields/models.py index aea02964e2..69b4e26145 100644 --- a/tests/model_fields/models.py +++ b/tests/model_fields/models.py @@ -502,6 +502,7 @@ class GeneratedModel(models.Model): output_field=models.IntegerField(), db_persist=True, ) + fk = models.ForeignKey(Foo, on_delete=models.CASCADE, null=True) class Meta: required_db_features = {"supports_stored_generated_columns"} @@ -515,6 +516,7 @@ class GeneratedModelVirtual(models.Model): output_field=models.IntegerField(), db_persist=False, ) + fk = models.ForeignKey(Foo, on_delete=models.CASCADE, null=True) class Meta: required_db_features = {"supports_virtual_generated_columns"} diff --git a/tests/model_fields/test_generatedfield.py b/tests/model_fields/test_generatedfield.py index 056a80c294..589f78cbb0 100644 --- a/tests/model_fields/test_generatedfield.py +++ b/tests/model_fields/test_generatedfield.py @@ -1,4 +1,5 @@ import uuid +from decimal import Decimal from django.apps import apps from django.db import IntegrityError, connection @@ -15,6 +16,7 @@ from django.test import SimpleTestCase, TestCase, skipUnlessDBFeature from django.test.utils import isolate_apps from .models import ( + Foo, GeneratedModel, GeneratedModelFieldWithConverters, GeneratedModelNull, @@ -187,6 +189,19 @@ class GeneratedFieldTestMixin: m.refresh_from_db() self.assertEqual(m.field, 8) + def test_save_model_with_foreign_key(self): + fk_object = Foo.objects.create(a="abc", d=Decimal("12.34")) + m = self.base_model(a=1, b=2, fk=fk_object) + m.save() + m = self._refresh_if_needed(m) + self.assertEqual(m.field, 3) + + def test_generated_fields_can_be_deferred(self): + fk_object = Foo.objects.create(a="abc", d=Decimal("12.34")) + m = self.base_model.objects.create(a=1, b=2, fk=fk_object) + m = self.base_model.objects.defer("field").get(id=m.id) + self.assertEqual(m.get_deferred_fields(), {"field"}) + def test_update(self): m = self.base_model.objects.create(a=1, b=2) self.base_model.objects.update(b=3) |
