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.
Note:
See TracTickets
for help on using tickets.