Loading docs/releases/1.8.9.txt +3 −0 Original line number Diff line number Diff line Loading @@ -23,3 +23,6 @@ Bugfixes ``db_index=True`` or ``unique=True`` to a ``CharField`` or ``TextField`` that already had the other specified, or when removing one of them from a field that had both (:ticket:`26034`). * Fixed a crash when using an ``__in`` lookup inside a ``Case`` expression (:ticket:`26071`). tests/expressions_case/tests.py +12 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ from uuid import UUID from django.core.exceptions import FieldError from django.db import connection, models from django.db.models import F, Q, Max, Min, Value from django.db.models import F, Q, Max, Min, Sum, Value from django.db.models.expressions import Case, When from django.test import TestCase from django.utils import six Loading Loading @@ -119,6 +119,17 @@ class CaseExpressionTests(TestCase): transform=attrgetter('integer', 'join_test') ) def test_annotate_with_in_clause(self): fk_rels = FKCaseTestModel.objects.filter(integer__in=[5]) self.assertQuerysetEqual( CaseTestModel.objects.only('pk', 'integer').annotate(in_test=Sum(Case( When(fk_rel__in=fk_rels, then=F('fk_rel__integer')), default=Value(0), ))).order_by('pk'), [(1, 0), (2, 0), (3, 0), (2, 0), (3, 0), (3, 0), (4, 5)], transform=attrgetter('integer', 'in_test') ) def test_annotate_with_join_in_condition(self): self.assertQuerysetEqual( CaseTestModel.objects.annotate(join_test=Case( Loading Loading
docs/releases/1.8.9.txt +3 −0 Original line number Diff line number Diff line Loading @@ -23,3 +23,6 @@ Bugfixes ``db_index=True`` or ``unique=True`` to a ``CharField`` or ``TextField`` that already had the other specified, or when removing one of them from a field that had both (:ticket:`26034`). * Fixed a crash when using an ``__in`` lookup inside a ``Case`` expression (:ticket:`26071`).
tests/expressions_case/tests.py +12 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ from uuid import UUID from django.core.exceptions import FieldError from django.db import connection, models from django.db.models import F, Q, Max, Min, Value from django.db.models import F, Q, Max, Min, Sum, Value from django.db.models.expressions import Case, When from django.test import TestCase from django.utils import six Loading Loading @@ -119,6 +119,17 @@ class CaseExpressionTests(TestCase): transform=attrgetter('integer', 'join_test') ) def test_annotate_with_in_clause(self): fk_rels = FKCaseTestModel.objects.filter(integer__in=[5]) self.assertQuerysetEqual( CaseTestModel.objects.only('pk', 'integer').annotate(in_test=Sum(Case( When(fk_rel__in=fk_rels, then=F('fk_rel__integer')), default=Value(0), ))).order_by('pk'), [(1, 0), (2, 0), (3, 0), (2, 0), (3, 0), (3, 0), (4, 5)], transform=attrgetter('integer', 'in_test') ) def test_annotate_with_join_in_condition(self): self.assertQuerysetEqual( CaseTestModel.objects.annotate(join_test=Case( Loading