Opened 37 hours ago

Last modified 14 hours 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.

Change History (0)

Note: See TracTickets for help on using tickets.
Back to Top