Opened 10 months ago
Last modified 10 months ago
#36093 closed Bug
Calling `full_clean()` on an existing child model instance in a multi-table inheritance should not execute a database query. — at Initial Version
| Reported by: | Sage Abdullah | Owned by: | |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | dev | 
| Severity: | Release blocker | Keywords: | |
| Cc: | Triage Stage: | Ready for checkin | |
| Has patch: | yes | Needs documentation: | no | 
| Needs tests: | no | Patch needs improvement: | no | 
| Easy pickings: | no | UI/UX: | no | 
Description
Regression in bf7b17d16d3978b2e1cee4a0f7ce8840bd1a8dc4.
The following test now fails after the above commit:
diff --git a/tests/model_inheritance/tests.py b/tests/model_inheritance/tests.py
index 6b005fcef0..28d03e1687 100644
--- a/tests/model_inheritance/tests.py
+++ b/tests/model_inheritance/tests.py
@@ -343,6 +343,12 @@ class ModelInheritanceTests(TestCase):
         self.assertEqual(type(MethodOverride.foo), DeferredAttribute)
+    def test_full_clean(self):
+        restaurant = Restaurant.objects.create()
+        with self.assertNumQueries(0):
+            with self.assertRaises(ValidationError):
+                restaurant.full_clean()
+
 class ModelInheritanceDataTests(TestCase):
     @classmethod
This is because the primary key of a child model is a OneToOneField to the parent model (e.g. place_ptr), and it's not in pk_fields, so the changes to the check for the check for skipping primary key when editing no longer passes for child models.
  Note:
 See   TracTickets
 for help on using tickets.