[1.11.x] Refs #28856 -- Fixed caching of a GenericForeignKey pointing to a model that uses more than one level of MTI.

This commit is contained in:
Morgan Wahl 2017-12-05 16:08:50 -05:00 committed by Tim Graham
parent e9d3dbaf3e
commit a2aea4521d
3 changed files with 17 additions and 3 deletions

View File

@ -17,3 +17,6 @@ Bugfixes
* Fixed incorrect foreign key constraint name for models with quoted
``db_table`` (:ticket:`28876`).
* Fixed a regression in caching of a ``GenericForeignKey`` when the referenced
model instance uses more than one level of multi-table inheritance
(:ticket:`28856`).

View File

@ -38,6 +38,11 @@ class Restaurant(Place):
return "Restaurant: %s" % self.name
class Cafe(Restaurant):
def __str__(self):
return "Cafe: %s" % self.name
class Address(models.Model):
street = models.CharField(max_length=80)
city = models.CharField(max_length=50)

View File

@ -5,9 +5,10 @@ from django.forms.models import modelform_factory
from django.test import TestCase, skipIfDBFeature
from .models import (
A, Address, B, Board, C, CharLink, Company, Contact, Content, D, Developer,
Guild, HasLinkThing, Link, Node, Note, OddRelation1, OddRelation2,
Organization, Person, Place, Related, Restaurant, Tag, Team, TextLink,
A, Address, B, Board, C, Cafe, CharLink, Company, Contact, Content, D,
Developer, Guild, HasLinkThing, Link, Node, Note, OddRelation1,
OddRelation2, Organization, Person, Place, Related, Restaurant, Tag, Team,
TextLink,
)
@ -54,6 +55,11 @@ class GenericRelationTests(TestCase):
charlink = CharLink.objects.latest('pk')
self.assertIs(charlink.content_object, charlink.content_object)
cafe = Cafe.objects.create()
CharLink.objects.create(content_object=cafe)
charlink = CharLink.objects.latest('pk')
self.assertIs(charlink.content_object, charlink.content_object)
def test_q_object_or(self):
"""
SQL query parameters for generic relations are properly