summaryrefslogtreecommitdiff
path: root/tests/model_fields
diff options
context:
space:
mode:
authorSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2023-12-06 23:19:09 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2023-12-08 09:46:11 +0100
commitb287af5dc954628d4b336aefc5027b2edceee64b (patch)
treec5ab9d66dbc5d343dbeb684594d61558693a9295 /tests/model_fields
parenteeb2119985d9879b1d9ac3730ea0b53c0c019221 (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.py2
-rw-r--r--tests/model_fields/test_generatedfield.py15
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)