From 4bfec242b488b174f7d386ab5bbd3363751cdb93 Mon Sep 17 00:00:00 2001 From: Simon Charette Date: Mon, 13 Jan 2025 13:53:57 -0500 Subject: [PATCH] Fixed #36093 -- Adjusted unique checks to account for inherited primary keys. Regression in bf7b17d16d3978b2e1cee4a0f7ce8840bd1a8dc4 refs #36075. Thanks Sage Abdullah for the report and tests. --- django/db/models/base.py | 2 +- tests/model_inheritance/tests.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/django/db/models/base.py b/django/db/models/base.py index a4d5a0d553..0f07d235a9 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -1493,7 +1493,7 @@ class Model(AltersData, metaclass=ModelBase): ): # no value, skip the lookup continue - if f in self._meta.pk_fields and not self._state.adding: + if f in model_class._meta.pk_fields and not self._state.adding: # no need to check for unique primary key when editing continue lookup_kwargs[str(field_name)] = lookup_value diff --git a/tests/model_inheritance/tests.py b/tests/model_inheritance/tests.py index 6b005fcef0..cc333a9ac2 100644 --- a/tests/model_inheritance/tests.py +++ b/tests/model_inheritance/tests.py @@ -343,6 +343,11 @@ class ModelInheritanceTests(TestCase): self.assertEqual(type(MethodOverride.foo), DeferredAttribute) + def test_full_clean(self): + restaurant = Restaurant.objects.create() + with self.assertNumQueries(0), self.assertRaises(ValidationError): + restaurant.full_clean() + class ModelInheritanceDataTests(TestCase): @classmethod