From dce1b9c2de00a3385c029c02dca325f44e7697a4 Mon Sep 17 00:00:00 2001 From: Shubham Singh Date: Thu, 11 Sep 2025 14:47:05 -0500 Subject: [PATCH] Fixed #36480 -- Made values() resolving error mention unselected aliases. Follow-up to cb13792938f2c887134eb6b5164d89f8d8f9f1bd. Refs #34437. --- django/db/models/sql/query.py | 2 +- tests/annotations/tests.py | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py index fb1f831042..39ecab2e91 100644 --- a/django/db/models/sql/query.py +++ b/django/db/models/sql/query.py @@ -1817,7 +1817,7 @@ class Query(BaseExpression): available = sorted( [ *get_field_names_from_opts(opts), - *self.annotation_select, + *self.annotations, *self._filtered_relations, ] ) diff --git a/tests/annotations/tests.py b/tests/annotations/tests.py index 8091498908..cf1eebf8d7 100644 --- a/tests/annotations/tests.py +++ b/tests/annotations/tests.py @@ -1539,3 +1539,13 @@ class AliasTests(TestCase): ) with self.assertRaisesMessage(ValueError, msg): Book.objects.alias(**{crafted_alias: FilteredRelation("authors")}) + + def test_values_wrong_alias(self): + expected_message = ( + "Cannot resolve keyword 'alias_typo' into field. Choices are: %s" + ) + alias_fields = ", ".join( + sorted(["my_alias"] + list(get_field_names_from_opts(Book._meta))) + ) + with self.assertRaisesMessage(FieldError, expected_message % alias_fields): + Book.objects.alias(my_alias=F("pk")).order_by("alias_typo")