summaryrefslogtreecommitdiff
path: root/tests/annotations
diff options
context:
space:
mode:
Diffstat (limited to 'tests/annotations')
-rw-r--r--tests/annotations/tests.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/annotations/tests.py b/tests/annotations/tests.py
index 29660a827e..5df958c333 100644
--- a/tests/annotations/tests.py
+++ b/tests/annotations/tests.py
@@ -969,6 +969,24 @@ class NonAggregateAnnotationTestCase(TestCase):
):
Book.objects.annotate(BooleanField(), Value(False), is_book=True)
+ def test_complex_annotations_must_have_an_alias(self):
+ complex_annotations = [
+ F("rating") * F("price"),
+ Value("title"),
+ Case(When(pages__gte=400, then=Value("Long")), default=Value("Short")),
+ Subquery(
+ Book.objects.filter(publisher_id=OuterRef("pk"))
+ .order_by("-pubdate")
+ .values("name")[:1]
+ ),
+ Exists(Book.objects.filter(publisher_id=OuterRef("pk"))),
+ ]
+ msg = "Complex annotations require an alias"
+ for annotation in complex_annotations:
+ with self.subTest(annotation=annotation):
+ with self.assertRaisesMessage(TypeError, msg):
+ Book.objects.annotate(annotation)
+
def test_chaining_annotation_filter_with_m2m(self):
qs = (
Author.objects.filter(