Loading django/db/models/expressions.py +2 −1 Original line number Diff line number Diff line Loading @@ -729,6 +729,7 @@ class When(Expression): def resolve_expression(self, query=None, allow_joins=True, reuse=None, summarize=False, for_save=False): c = self.copy() c.is_summary = summarize if hasattr(c.condition, 'resolve_expression'): c.condition = c.condition.resolve_expression(query, allow_joins, reuse, summarize, False) c.result = c.result.resolve_expression(query, allow_joins, reuse, summarize, for_save) return c Loading docs/releases/1.8.8.txt +4 −0 Original line number Diff line number Diff line Loading @@ -54,3 +54,7 @@ Bugfixes * Made ``loaddata`` skip disabling and enabling database constraints when it doesn't load any fixtures (:ticket:`23372`). * Fixed a crash in ``QuerySet.values()/values_list()`` after an ``annotate()`` and ``order_by()`` when ``values()/values_list()`` includes a field not in the ``order_by()`` (:ticket:`25316`). tests/expressions_case/tests.py +12 −0 Original line number Diff line number Diff line Loading @@ -252,6 +252,18 @@ class CaseExpressionTests(TestCase): transform=attrgetter('integer', 'test') ) def test_annotate_values_not_in_order_by(self): self.assertEqual( list(CaseTestModel.objects.annotate(test=Case( When(integer=1, then=Value('one')), When(integer=2, then=Value('two')), When(integer=3, then=Value('three')), default=Value('other'), output_field=models.CharField(), )).order_by('test').values_list('integer', flat=True)), [1, 4, 3, 3, 3, 2, 2] ) def test_combined_expression(self): self.assertQuerysetEqual( CaseTestModel.objects.annotate( Loading Loading
django/db/models/expressions.py +2 −1 Original line number Diff line number Diff line Loading @@ -729,6 +729,7 @@ class When(Expression): def resolve_expression(self, query=None, allow_joins=True, reuse=None, summarize=False, for_save=False): c = self.copy() c.is_summary = summarize if hasattr(c.condition, 'resolve_expression'): c.condition = c.condition.resolve_expression(query, allow_joins, reuse, summarize, False) c.result = c.result.resolve_expression(query, allow_joins, reuse, summarize, for_save) return c Loading
docs/releases/1.8.8.txt +4 −0 Original line number Diff line number Diff line Loading @@ -54,3 +54,7 @@ Bugfixes * Made ``loaddata`` skip disabling and enabling database constraints when it doesn't load any fixtures (:ticket:`23372`). * Fixed a crash in ``QuerySet.values()/values_list()`` after an ``annotate()`` and ``order_by()`` when ``values()/values_list()`` includes a field not in the ``order_by()`` (:ticket:`25316`).
tests/expressions_case/tests.py +12 −0 Original line number Diff line number Diff line Loading @@ -252,6 +252,18 @@ class CaseExpressionTests(TestCase): transform=attrgetter('integer', 'test') ) def test_annotate_values_not_in_order_by(self): self.assertEqual( list(CaseTestModel.objects.annotate(test=Case( When(integer=1, then=Value('one')), When(integer=2, then=Value('two')), When(integer=3, then=Value('three')), default=Value('other'), output_field=models.CharField(), )).order_by('test').values_list('integer', flat=True)), [1, 4, 3, 3, 3, 2, 2] ) def test_combined_expression(self): self.assertQuerysetEqual( CaseTestModel.objects.annotate( Loading