#26056: ArrayField does not work with ValueListQuerySet ----------------------------------+------------------------------------ Reporter: CGenie | Owner: Type: New feature | Status: new Component: contrib.postgres | Version: master Severity: Normal | Resolution: Keywords: | Triage Stage: Accepted Has patch: 0 | Needs documentation: 0 Needs tests: 0 | Patch needs improvement: 0 Easy pickings: 0 | UI/UX: 0 ----------------------------------+------------------------------------ Description changed by timgraham:
Old description: > Basically queries of type: > > {{{#!python > A.objects.filter(array_field__overlap=B.objects.filter(foo)) > }}} > > fail at Python level: > > {{{ > Traceback (most recent call last): > File "failing.py", line 9, in <module> > UserList.objects.filter(users__overlap=User.objects.all().values_list('id', > flat=True)).count() > File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- > packages/Django-1.8.5-py2.7.egg/django/db/models/query.py", line 318, in > count > return self.query.get_count(using=self.db) > File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- > packages/Django-1.8.5-py2.7.egg/django/db/models/sql/query.py", line 466, > in get_count > number = obj.get_aggregation(using, ['__count'])['__count'] > File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- > packages/Django-1.8.5-py2.7.egg/django/db/models/sql/query.py", line 447, > in get_aggregation > result = compiler.execute_sql(SINGLE) > File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- > packages/Django-1.8.5-py2.7.egg/django/db/models/sql/compiler.py", line > 829, in execute_sql > sql, params = self.as_sql() > File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- > packages/Django-1.8.5-py2.7.egg/django/db/models/sql/compiler.py", line > 387, in as_sql > where, w_params = self.compile(self.query.where) > File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- > packages/Django-1.8.5-py2.7.egg/django/db/models/sql/compiler.py", line > 357, in compile > sql, params = node.as_sql(self, self.connection) > File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- > packages/Django-1.8.5-py2.7.egg/django/db/models/sql/where.py", line 104, > in as_sql > sql, params = compiler.compile(child) > File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- > packages/Django-1.8.5-py2.7.egg/django/db/models/sql/compiler.py", line > 357, in compile > sql, params = node.as_sql(self, self.connection) > File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- > packages/Django-1.8.5-py2.7.egg/django/contrib/postgres/fields/array.py", > line 183, in as_sql > sql, params = super(ArrayOverlap, self).as_sql(qn, connection) > File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- > packages/Django-1.8.5-py2.7.egg/django/contrib/postgres/lookups.py", line > 8, in as_sql > params = lhs_params + rhs_params > TypeError: can only concatenate list (not "tuple") to list > }}} > > Toy project to reproduce this behavior can be found here: > https://github.com/CGenie/django_array_join_fail > > This fails in 1.8 as well as in 1.9. New description: Basically queries of type: {{{#!python A.objects.filter(array_field__overlap=B.objects.filter(foo).values_list('id', flat=True)) }}} fail at Python level: {{{ Traceback (most recent call last): File "failing.py", line 9, in <module> UserList.objects.filter(users__overlap=User.objects.all().values_list('id', flat=True)).count() File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- packages/Django-1.8.5-py2.7.egg/django/db/models/query.py", line 318, in count return self.query.get_count(using=self.db) File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- packages/Django-1.8.5-py2.7.egg/django/db/models/sql/query.py", line 466, in get_count number = obj.get_aggregation(using, ['__count'])['__count'] File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- packages/Django-1.8.5-py2.7.egg/django/db/models/sql/query.py", line 447, in get_aggregation result = compiler.execute_sql(SINGLE) File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- packages/Django-1.8.5-py2.7.egg/django/db/models/sql/compiler.py", line 829, in execute_sql sql, params = self.as_sql() File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- packages/Django-1.8.5-py2.7.egg/django/db/models/sql/compiler.py", line 387, in as_sql where, w_params = self.compile(self.query.where) File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- packages/Django-1.8.5-py2.7.egg/django/db/models/sql/compiler.py", line 357, in compile sql, params = node.as_sql(self, self.connection) File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- packages/Django-1.8.5-py2.7.egg/django/db/models/sql/where.py", line 104, in as_sql sql, params = compiler.compile(child) File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- packages/Django-1.8.5-py2.7.egg/django/db/models/sql/compiler.py", line 357, in compile sql, params = node.as_sql(self, self.connection) File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- packages/Django-1.8.5-py2.7.egg/django/contrib/postgres/fields/array.py", line 183, in as_sql sql, params = super(ArrayOverlap, self).as_sql(qn, connection) File "/home/przemek/.virtualenvs/italamo/lib/python2.7/site- packages/Django-1.8.5-py2.7.egg/django/contrib/postgres/lookups.py", line 8, in as_sql params = lhs_params + rhs_params TypeError: can only concatenate list (not "tuple") to list }}} Toy project to reproduce this behavior can be found here: https://github.com/CGenie/django_array_join_fail This fails in 1.8 as well as in 1.9. -- -- Ticket URL: <https://code.djangoproject.com/ticket/26056#comment:2> 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 django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/064.562d4afd23db99cbb50a24c8213a64ff%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.