#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            |       Keywords:
           Triage Stage:  Unreviewed        |      Has patch:  0
    Needs documentation:  0                 |    Needs tests:  0
Patch needs improvement:  0                 |  Easy pickings:  0
                  UI/UX:  0                 |
--------------------------------------------+------------------------
 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.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/34016>
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/0107018345712977-ecbe1c27-8868-4a47-aa99-3a27edd1079a-000000%40eu-central-1.amazonses.com.

Reply via email to