1
0
mirror of https://github.com/django/django.git synced 2025-10-23 21:59:11 +00:00

Refs #34634 -- Fixed creating diamond-shaped MTI objects with ancestors inherited from different paths.

Co-authored-by: Simon Charette <charette.s@gmail.com>
This commit is contained in:
Akash Kumar Sen
2023-06-15 18:08:30 +05:30
committed by Mariusz Felisiak
parent 82a588a6bc
commit 1754c2c802
3 changed files with 38 additions and 15 deletions

View File

@@ -15,6 +15,7 @@ from .models import (
GrandChild,
GrandParent,
ItalianRestaurant,
ItalianRestaurantCommonParent,
MixinModel,
Parent,
ParkingLot,
@@ -158,6 +159,28 @@ class ModelInheritanceTests(TestCase):
with self.assertNumQueries(4):
common_child.save()
def test_create_diamond_mti_common_parent(self):
with self.assertNumQueries(4):
italian_restaurant_child = ItalianRestaurantCommonParent.objects.create(
name="Ristorante Miron",
address="1234 W. Ash",
)
self.assertEqual(
italian_restaurant_child.italianrestaurant_ptr.place_ptr,
italian_restaurant_child.place_ptr_two,
)
self.assertEqual(
italian_restaurant_child.italianrestaurant_ptr.restaurant_ptr,
italian_restaurant_child.restaurant_ptr,
)
self.assertEqual(
italian_restaurant_child.restaurant_ptr.place_ptr,
italian_restaurant_child.place_ptr_two,
)
self.assertEqual(italian_restaurant_child.name, "Ristorante Miron")
self.assertEqual(italian_restaurant_child.address, "1234 W. Ash")
def test_update_parent_filtering(self):
"""
Updating a field of a model subclass doesn't issue an UPDATE