From ee78fe390db7cf319f0ddc2de0c9190c783ef925 Mon Sep 17 00:00:00 2001 From: Mariusz Felisiak Date: Fri, 19 Jan 2024 08:55:50 +0100 Subject: [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 --- tests/model_fields/models.py | 4 ++-- tests/model_fields/test_generatedfield.py | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'tests/model_fields') 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) -- cgit v1.3