Fixed #24752 -- query crash when reusing Case expressions

Case expressions weren't copied deep enough (self.cases list was
reused resulting in an error).
This commit is contained in:
Anssi Kääriäinen 2015-05-05 14:11:58 +03:00 committed by Tim Graham
parent 9096e2b5f7
commit 7b05d2fdae
3 changed files with 20 additions and 0 deletions

View file

@ -274,6 +274,18 @@ class CaseExpressionTests(TestCase):
transform=attrgetter('integer', 'integer2')
)
def test_case_reuse(self):
SOME_CASE = Case(
When(pk=0, then=Value('0')),
default=Value('1'),
output_field=models.CharField(),
)
self.assertQuerysetEqual(
CaseTestModel.objects.annotate(somecase=SOME_CASE).order_by('pk'),
CaseTestModel.objects.annotate(somecase=SOME_CASE).order_by('pk').values_list('pk', 'somecase'),
lambda x: (x.pk, x.somecase)
)
def test_aggregate(self):
self.assertEqual(
CaseTestModel.objects.aggregate(