#34016: QuerySet.values_list crash when using ArrayAgg
----------------------------------+--------------------------------------
Reporter: Alex Kerkum | Owner: (none)
Type: Bug | Status: new
Component: contrib.postgres | Version: 4.1
Severity: Normal | Resolution:
Keywords: | Triage Stage: Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
----------------------------------+--------------------------------------
Description changed by Alex Kerkum:
Old description:
> Using `ArrayAgg` in combination with `values_list` results in 'TypeError:
> Complex expressions require an alias'.
>
> For example:
>
> {{{#!python
> from django.contrib.postgres.aggregates import ArrayAgg
> SampleUser.objects.values_list(ArrayAgg("post_id"))
>
> File django/db/models/aggregates.py:98, in Aggregate.default_alias(self)
> 96 if len(expressions) == 1 and hasattr(expressions[0], "name"):
> 97 return "%s__%s" % (expressions[0].name, self.name.lower())
> ---> 98 raise TypeError("Complex expressions require an alias")
>
> TypeError: Complex expressions require an alias
> }}}
>
> The {{{expressions}}} variable here seems to contain {{{[F(post_id),
> OrderByList()]}}} causing the {{{len[expressions]}}} check to fail.
> That's as far as I got.
>
> This still worked in 4.0.7.
New description:
Using `ArrayAgg` in combination with `values_list` results in 'TypeError:
Complex expressions require an alias'.
For example:
{{{#!python
from django.contrib.postgres.aggregates import ArrayAgg
SampleUser.objects.values_list(ArrayAgg("post_id"))
File django/db/models/aggregates.py:98, in Aggregate.default_alias(self)
96 if len(expressions) == 1 and hasattr(expressions[0], "name"):
97 return "%s__%s" % (expressions[0].name, self.name.lower())
---> 98 raise TypeError("Complex expressions require an alias")
TypeError: Complex expressions require an alias
}}}
The {{{expressions}}} variable here seems to contain {{{[F(post_id),
OrderByList()]}}} causing the {{{len[expressions]}}} check to fail. That's
as far as I got.
To me this seems related to #33898 caused by a regression in
https://github.com/django/django/commit/e06dc4571ea9fd5723c8029959b95808be9f8812
This still worked in 4.0.7.
--
--
Ticket URL: <https://code.djangoproject.com/ticket/34016#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/0107018345726ab8-f8cc1aaa-1b98-43d2-9a5f-f999e84db6c2-000000%40eu-central-1.amazonses.com.