mirror of
https://github.com/django/django.git
synced 2025-10-24 06:06:09 +00:00
Fix proxy model Query.remove_inherited_models()
Fixed #18248 -- proxy models were added to included_inherited_models in sql.query.Query. The variable is meant to be used for multitable inheritance only. This mistake caused problems in situations where proxy model's query was reused.
This commit is contained in:
@@ -19,7 +19,7 @@ from .models import (Annotation, Article, Author, Celebrity, Child, Cover,
|
||||
ManagedModel, Member, NamedCategory, Note, Number, Plaything, PointerA,
|
||||
Ranking, Related, Report, ReservedName, Tag, TvChef, Valid, X, Food, Eaten,
|
||||
Node, ObjectA, ObjectB, ObjectC, CategoryItem, SimpleCategory,
|
||||
SpecialCategory, OneToOneCategory, NullableName)
|
||||
SpecialCategory, OneToOneCategory, NullableName, ProxyCategory)
|
||||
|
||||
|
||||
class BaseQuerysetTest(TestCase):
|
||||
@@ -1952,3 +1952,15 @@ class EmptyStringsAsNullTest(TestCase):
|
||||
DumbCategory.objects.exclude(namedcategory__name__in=['nonexisting']),
|
||||
[self.nc.pk], attrgetter('pk')
|
||||
)
|
||||
|
||||
class ProxyQueryCleanupTest(TestCase):
|
||||
def test_evaluated_proxy_count(self):
|
||||
"""
|
||||
Test that generating the query string doesn't alter the query's state
|
||||
in irreversible ways. Refs #18248.
|
||||
"""
|
||||
ProxyCategory.objects.create()
|
||||
qs = ProxyCategory.objects.all()
|
||||
self.assertEqual(qs.count(), 1)
|
||||
str(qs.query)
|
||||
self.assertEqual(qs.count(), 1)
|
||||
|
||||
Reference in New Issue
Block a user