Fixed #21554 -- Incorrect SQL generated when using multiple inheritance.

This commit is contained in:
pegler 2013-12-05 11:46:25 -05:00 committed by Simon Charette
parent b63acdfe71
commit 38e24d680d
3 changed files with 35 additions and 7 deletions

View file

@ -233,3 +233,17 @@ class User(models.Model):
class Profile(User):
profile_id = models.AutoField(primary_key=True)
extra = models.CharField(max_length=30, blank=True)
# Check concrete + concrete -> concrete -> concrete
class Politician(models.Model):
politician_id = models.AutoField(primary_key=True)
title = models.CharField(max_length=50)
class Congressman(Person, Politician):
state = models.CharField(max_length=2)
class Senator(Congressman):
pass

View file

@ -15,7 +15,7 @@ from .models import (Place, Restaurant, ItalianRestaurant, ParkingLot,
SelfRefChild, ArticleWithAuthor, M2MChild, QualityControl, DerivedM,
Person, BirthdayParty, BachelorParty, MessyBachelorParty,
InternalCertificationAudit, BusStation, TrainStation, User, Profile,
ParkingLot4A, ParkingLot4B)
ParkingLot4A, ParkingLot4B, Senator)
class ModelInheritanceTest(TestCase):
@ -455,3 +455,10 @@ class ModelInheritanceTest(TestCase):
# used in the qs and top contains direct pointer to the bottom model.
qs = ItalianRestaurant.objects.values_list('serves_gnocchi').filter(name='foo')
self.assertEqual(str(qs.query).count('JOIN'), 1)
def test_issue_21554(self):
senator = Senator.objects.create(
name='John Doe', title='X', state='Y'
)
Senator.objects.get(pk=senator.pk)