summaryrefslogtreecommitdiff
path: root/tests/model_fields
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2024-01-19 08:55:50 +0100
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2024-01-19 08:56:14 +0100
commitee78fe390db7cf319f0ddc2de0c9190c783ef925 (patch)
treefbc65f81569d8361d32ab6fb54fe0835361be94f /tests/model_fields
parent4ed1423de4342e453bf1d80129e84c14be819df3 (diff)
[5.0.x] Fixed #35127 -- Made Model.full_clean() ignore GeneratedFields.
Thanks Claude Paroz for the report. Regression in f333e3513e8bdf5ffeb6eeb63021c230082e6f95. Backport of 4879907223d70ee1a82474d9286ccfa5dae96971 from main
Diffstat (limited to 'tests/model_fields')
-rw-r--r--tests/model_fields/models.py4
-rw-r--r--tests/model_fields/test_generatedfield.py8
2 files changed, 10 insertions, 2 deletions
diff --git a/tests/model_fields/models.py b/tests/model_fields/models.py
index 69b4e26145..e34f3c8947 100644
--- a/tests/model_fields/models.py
+++ b/tests/model_fields/models.py
@@ -502,7 +502,7 @@ class GeneratedModel(models.Model):
output_field=models.IntegerField(),
db_persist=True,
)
- fk = models.ForeignKey(Foo, on_delete=models.CASCADE, null=True)
+ fk = models.ForeignKey(Foo, on_delete=models.CASCADE, null=True, blank=True)
class Meta:
required_db_features = {"supports_stored_generated_columns"}
@@ -516,7 +516,7 @@ class GeneratedModelVirtual(models.Model):
output_field=models.IntegerField(),
db_persist=False,
)
- fk = models.ForeignKey(Foo, on_delete=models.CASCADE, null=True)
+ fk = models.ForeignKey(Foo, on_delete=models.CASCADE, null=True, blank=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 589f78cbb0..a636e984fd 100644
--- a/tests/model_fields/test_generatedfield.py
+++ b/tests/model_fields/test_generatedfield.py
@@ -168,6 +168,14 @@ class GeneratedFieldTestMixin:
with self.assertRaisesMessage(AttributeError, msg):
m.field
+ def test_full_clean(self):
+ m = self.base_model(a=1, b=2)
+ # full_clean() ignores GeneratedFields.
+ m.full_clean()
+ m.save()
+ m = self._refresh_if_needed(m)
+ self.assertEqual(m.field, 3)
+
def test_create(self):
m = self.base_model.objects.create(a=1, b=2)
m = self._refresh_if_needed(m)