From 08f74ba63258e1ccc1ec53375c7422c30e88d5bd Mon Sep 17 00:00:00 2001 From: prabhbir Date: Wed, 3 Sep 2025 14:46:14 +0530 Subject: [PATCH] Fix GROUP BY alias in subquery generation and formatting issues --- tests/test_group_by.py | 14 ++++++++++++++ tortoise/queryset.py | 4 +--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/tests/test_group_by.py b/tests/test_group_by.py index aab39a4e3..bab84d7da 100644 --- a/tests/test_group_by.py +++ b/tests/test_group_by.py @@ -1,5 +1,6 @@ from tests.testmodels import Author, Book, Event, Team, Tournament from tortoise.contrib import test +from tortoise.expressions import Subquery from tortoise.functions import Avg, Count, Sum, Upper @@ -317,3 +318,16 @@ async def test_group_by_nested_column(self): async def test_group_by_id_with_nested_filter(self): ret = await Book.filter(author__name="author1").group_by("id").values_list("id") self.assertEqual(set(ret), {(book.id,) for book in self.books1}) + + async def test_subquery_group_by_no_alias(self): + query = Author.annotate( + book_name=Subquery(Book.all().group_by("name").order_by("name").limit(1).values("name")) + ) + + sql = query.sql() + + self.assertIn('GROUP BY "name"', sql) + self.assertNotIn('GROUP BY "name" "', sql) + + result = await query.values("name", "book_name") + self.assertIsInstance(result, list) diff --git a/tortoise/queryset.py b/tortoise/queryset.py index d01faab25..b79bf605e 100644 --- a/tortoise/queryset.py +++ b/tortoise/queryset.py @@ -1598,9 +1598,7 @@ def _resolve_group_bys(self, *field_names: str) -> list: field=field, forwarded_fields=forwarded_fields, ) - field = related_table[related_db_field].as_( - f"{related_table.get_table_name()}__{field_name}" - ) + field = related_table[related_db_field] group_bys.append(field) return group_bys