﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
30829	"TypeError: can only concatenate tuple (not ""list"") to tuple"	Nahuel	nobody	"Since release 2.1.13, using DRF, we got an exception filtering through a JSONField using a querystring. This doesn't happens using 2.1.12.

This seems related to the ticket : https://code.djangoproject.com/ticket/30769

Using pdb to see what contains lhs_params and rhs_params, show that the first is a tuple, and rhs_params is a list that contains an object of type JSONAdapter.

And there is the stacktrace:
{{{
  File ""/code/.tox/tests/lib/python3.6/site-packages/rest_framework/test.py"", line 292, in get
    response = super(APIClient, self).get(path, data=data, **extra)
  File ""/code/.tox/tests/lib/python3.6/site-packages/rest_framework/test.py"", line 209, in get
    return self.generic('GET', path, **r)
  File ""/code/.tox/tests/lib/python3.6/site-packages/rest_framework/test.py"", line 238, in generic
    method, path, data, content_type, secure, **extra)
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/test/client.py"", line 422, in generic
    return self.request(**r)
  File ""/code/.tox/tests/lib/python3.6/site-packages/rest_framework/test.py"", line 289, in request
    return super(APIClient, self).request(**kwargs)
  File ""/code/.tox/tests/lib/python3.6/site-packages/rest_framework/test.py"", line 241, in request
    request = super(APIRequestFactory, self).request(**kwargs)
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/test/client.py"", line 503, in request
    raise exc_value
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/core/handlers/exception.py"", line 34, in inner
    response = get_response(request)
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/core/handlers/base.py"", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/core/handlers/base.py"", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/views/decorators/csrf.py"", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File ""/code/.tox/tests/lib/python3.6/site-packages/rest_framework/viewsets.py"", line 103, in view
    return self.dispatch(request, *args, **kwargs)
  File ""/code/.tox/tests/lib/python3.6/site-packages/rest_framework/views.py"", line 483, in dispatch
    response = self.handle_exception(exc)
  File ""/code/.tox/tests/lib/python3.6/site-packages/rest_framework/views.py"", line 443, in handle_exception
    self.raise_uncaught_exception(exc)
  File ""/code/.tox/tests/lib/python3.6/site-packages/rest_framework/views.py"", line 480, in dispatch
    response = handler(request, *args, **kwargs)
  File ""/code/.tox/tests/lib/python3.6/site-packages/rest_framework/mixins.py"", line 42, in list
    page = self.paginate_queryset(queryset)
  File ""/code/.tox/tests/lib/python3.6/site-packages/rest_framework/generics.py"", line 173, in paginate_queryset
    return self.paginator.paginate_queryset(queryset, self.request, view=self)
  File ""/code/.tox/tests/lib/python3.6/site-packages/rest_framework/pagination.py"", line 204, in paginate_queryset
    self.page = paginator.page(page_number)
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/core/paginator.py"", line 70, in page
    number = self.validate_number(number)
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/core/paginator.py"", line 48, in validate_number
    if number > self.num_pages:
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/utils/functional.py"", line 80, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/core/paginator.py"", line 97, in num_pages
    if self.count == 0 and not self.allow_empty_first_page:
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/utils/functional.py"", line 80, in __get__
    res = instance.__dict__[self.name] = self.func(instance)
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/core/paginator.py"", line 91, in count
    return c()
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/db/models/query.py"", line 392, in count
    return self.query.get_count(using=self.db)
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/db/models/sql/query.py"", line 504, in get_count
    number = obj.get_aggregation(using, ['__count'])['__count']
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/db/models/sql/query.py"", line 472, in get_aggregation
    outer_query.add_subquery(inner_query, using)
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/db/models/sql/subqueries.py"", line 194, in add_subquery
    self.subquery, self.sub_params = query.get_compiler(using).as_sql(with_col_aliases=True)
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/db/models/sql/compiler.py"", line 489, in as_sql
    where, w_params = self.compile(self.where) if self.where is not None else ("""", [])
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/db/models/sql/compiler.py"", line 405, in compile
    sql, params = node.as_sql(self, self.connection)
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/db/models/sql/where.py"", line 81, in as_sql
    sql, params = compiler.compile(child)
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/db/models/sql/compiler.py"", line 405, in compile
    sql, params = node.as_sql(self, self.connection)
  File ""/code/.tox/tests/lib/python3.6/site-packages/django/contrib/postgres/lookups.py"", line 11, in as_sql
    params = lhs_params + rhs_params
TypeError: can only concatenate tuple (not ""list"") to tuple
}}}
"	Bug	closed	Database layer (models, ORM)	2.1	Release blocker	duplicate			Unreviewed	0	0	0	0	0	0
