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 26071,IN queries inside conditional case expressions crashes on django 1.8,Alberto Avila,Tim Graham ,"When making a IN filter expression inside a conditional case expression django crashes with the following exception: {{{ AttributeError: 'SubqueryConstraint' object has no attribute 'lhs' }}} The stacktrace looks like: {{{ lib/python2.7/site-packages/django/db/models/query.py line 794 in annotate obj.query.add_annotation(annotation, alias, is_summary=False) lib/python2.7/site-packages/django/db/models/sql/query.py line 983 in add_annotation summarize=is_summary) lib/python2.7/site-packages/django/db/models/aggregates.py line 21 in resolve_expression if c.source_expressions[0].contains_aggregate and not summarize: lib/python2.7/site-packages/django/utils/functional.py line 59 in __get__ res = instance.__dict__[self.name] = self.func(instance) lib/python2.7/site-packages/django/db/models/expressions.py line 179 in contains_aggregate if expr and expr.contains_aggregate: lib/python2.7/site-packages/django/utils/functional.py line 59 in __get__ res = instance.__dict__[self.name] = self.func(instance) lib/python2.7/site-packages/django/db/models/expressions.py line 179 in contains_aggregate if expr and expr.contains_aggregate: lib/python2.7/site-packages/django/utils/functional.py line 59 in __get__ res = instance.__dict__[self.name] = self.func(instance) lib/python2.7/site-packages/django/db/models/sql/where.py line 324 in contains_aggregate return self._contains_aggregate(self) lib/python2.7/site-packages/django/db/models/sql/where.py line 320 in _contains_aggregate return any(cls._contains_aggregate(c) for c in obj.children) lib/python2.7/site-packages/django/db/models/sql/where.py line 320 in return any(cls._contains_aggregate(c) for c in obj.children) lib/python2.7/site-packages/django/db/models/sql/where.py line 319 in _contains_aggregate return getattr(obj.lhs, 'contains_aggregate', False) or getattr(obj.rhs, 'contains_aggregate', False) AttributeError: 'SubqueryConstraint' object has no attribute 'lhs' }}} This error is already fixed on django 1.9 branch. The problem was fixed with this commit: https://github.com/django/django/commit/afe0bb7b13bb8dc4370f32225238012c873b0ee3#diff-73bc0dcb1a1c931adcf1d344abca22ffR180 I'll create a PR with the changes from that commit that fixes the issue, not sure if the entire commit can be (or should be) backported to 1.8 UPDATE: PR with only the changes needed and its test: https://github.com/django/django/pull/5967",Bug,closed,"Database layer (models, ORM)",1.8,Normal,fixed,,,Accepted,1,0,0,1,0,0