summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/regressiontests/queries/models.py4
-rw-r--r--tests/regressiontests/queries/tests.py14
2 files changed, 17 insertions, 1 deletions
diff --git a/tests/regressiontests/queries/models.py b/tests/regressiontests/queries/models.py
index 89eefdf48e..07aa6db67b 100644
--- a/tests/regressiontests/queries/models.py
+++ b/tests/regressiontests/queries/models.py
@@ -10,6 +10,10 @@ from django.db import models
class DumbCategory(models.Model):
pass
+class ProxyCategory(DumbCategory):
+ class Meta:
+ proxy = True
+
class NamedCategory(DumbCategory):
name = models.CharField(max_length=10)
diff --git a/tests/regressiontests/queries/tests.py b/tests/regressiontests/queries/tests.py
index 416970d493..8e86903724 100644
--- a/tests/regressiontests/queries/tests.py
+++ b/tests/regressiontests/queries/tests.py
@@ -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)