#29643: Hashing list in Q objects when using __in lookup
-------------------------------------+-------------------------------------
     Reporter:  rhyre                |                    Owner:  felixxm
         Type:  Bug                  |                   Status:  assigned
    Component:  Utilities            |                  Version:  2.0
     Severity:  Release blocker      |               Resolution:
     Keywords:  hash, tuple, list,   |             Triage Stage:  Accepted
  drf                                |
    Has patch:  0                    |      Needs documentation:  0
  Needs tests:  0                    |  Patch needs improvement:  0
Easy pickings:  0                    |                    UI/UX:  0
-------------------------------------+-------------------------------------

Comment (by rhyre):

 Full traceback:
 {{{
 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/django/core/handlers/exception.py" in inner
   35.             response = get_response(request)

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/django/core/handlers/base.py" in _get_response
   128.                 response = self.process_exception_by_middleware(e,
 request)

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/django/core/handlers/base.py" in _get_response
   126.                 response = wrapped_callback(request,
 *callback_args, **callback_kwargs)

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/django/views/decorators/csrf.py" in wrapped_view
   54.         return view_func(*args, **kwargs)

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/rest_framework/viewsets.py" in view
   95.             return self.dispatch(request, *args, **kwargs)

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/rest_framework/views.py" in dispatch
   494.             response = self.handle_exception(exc)

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/rest_framework/views.py" in handle_exception
   454.             self.raise_uncaught_exception(exc)

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/rest_framework/views.py" in dispatch
   491.             response = handler(request, *args, **kwargs)

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/rest_framework/mixins.py" in list
   40.         queryset = self.filter_queryset(self.get_queryset())

 File "/home/rhyre/-/testline_rest.py" in get_queryset
   109.         return LegacyTestlineService.list_testlines()

 File "/home/rhyre/-/testline.py" in list_testlines
   162.         return cache_query(key='testline/list', func=query,
 args=['id', 'name', 'status', 'add_date'], timeout=600)

 File "/home/rhyre/-/cache.py" in cache_query
   40.         cache.set(key, dill.dumps(result), timeout)

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/dill/_dill.py" in dumps
   293.     dump(obj, file, protocol, byref, fmode, recurse)#, strictio)

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/dill/_dill.py" in dump
   286.         pik.dump(obj)

 File "/usr/lib64/python3.6/pickle.py" in dump
   409.         self.save(obj)

 File "/usr/lib64/python3.6/pickle.py" in save
   496.                 rv = reduce(self.proto)

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/django/db/models/query.py" in __getstate__
   224.         self._fetch_all()

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/django/db/models/query.py" in _fetch_all
   1179.             self._result_cache = list(self._iterable_class(self))

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/django/db/models/query.py" in __iter__
   53.         results =
 compiler.execute_sql(chunked_fetch=self.chunked_fetch,
 chunk_size=self.chunk_size)

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/django/db/models/sql/compiler.py" in execute_sql
   1055.             sql, params = self.as_sql()

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/django/db/models/sql/compiler.py" in as_sql
   448.             extra_select, order_by, group_by = self.pre_sql_setup()

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/django/db/models/sql/compiler.py" in pre_sql_setup
   55.         group_by = self.get_group_by(self.select + extra_select,
 order_by)

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/django/db/models/sql/compiler.py" in get_group_by
   129.         expressions = self.collapse_group_by(expressions,
 having_group_by)

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/django/db/models/sql/compiler.py" in collapse_group_by
   180.                 expr for expr in expressions if expr in pks or
 getattr(expr, 'alias', None) not in aliases

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/django/db/models/sql/compiler.py" in <listcomp>
   180.                 expr for expr in expressions if expr in pks or
 getattr(expr, 'alias', None) not in aliases

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/django/db/models/expressions.py" in __hash__
   390.             for key, value in kwargs.items()

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/django/db/models/expressions.py" in __hash__
   390.             for key, value in kwargs.items()

 File "/home/rhyre/.virtualenvs/py3new/lib/python3.6/site-
 packages/django/utils/tree.py" in __hash__
   74.         return hash((self.__class__, self.connector, self.negated) +
 tuple(self.children))

 Exception Type: TypeError at /testline/list/ajax
 Exception Value: unhashable type: 'list'
 Request information:
 USER: AnonymousUser
 }}}

-- 
Ticket URL: <https://code.djangoproject.com/ticket/29643#comment:9>
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 post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/063.4a0e4a343ba6de0faed2cdfe20859c0e%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to