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 33705 IsNull() lookup cannot be used directly in filters. Florian Apolloner David Wobrock "The docs in https://docs.djangoproject.com/en/4.0/ref/models/lookups/#django.db.models.Lookup seem to suggest that {{{ __= }}} is somewhat equivalent to {{{ (, ) }}} This does work for some lookups, but not for `IsNull`: {{{ >>> from django.contrib.auth.models import User >>> from django.db.models import F >>> from django.db.models.lookups import GreaterThan, IsNull >>> User.objects.filter(GreaterThan(F('pk'), 1000)) DEBUG 2022-05-13 10:45:10,907 utils 63853 (0.006) SELECT ""auth_user"".""id"", ""auth_user"".""password"", ""auth_user"".""last_login"", ""auth_user"".""is_superuser"", ""auth_user"".""username"", ""auth_user"".""first_name"", ""auth_user"".""last_name"", ""auth_user"".""email"", ""auth_user"".""is_staff"", ""auth_user"".""is_active"", ""auth_user"".""date_joined"" FROM ""auth_user"" WHERE ""auth_user"".""id"" > (1000) LIMIT 21; args=(1000,); alias=default >>> User.objects.filter(IsNull(F('pk'), True)) Traceback (most recent call last): File """", line 1, in File ""/home/florian/dev/bap/observer/server/__pypackages__/3.10/lib/django/db/models/manager.py"", line 85, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File ""/home/florian/dev/bap/observer/server/__pypackages__/3.10/lib/django/db/models/query.py"", line 1071, in filter return self._filter_or_exclude(False, args, kwargs) File ""/home/florian/dev/bap/observer/server/__pypackages__/3.10/lib/django/db/models/query.py"", line 1089, in _filter_or_exclude clone._filter_or_exclude_inplace(negate, args, kwargs) File ""/home/florian/dev/bap/observer/server/__pypackages__/3.10/lib/django/db/models/query.py"", line 1096, in _filter_or_exclude_inplace self._query.add_q(Q(*args, **kwargs)) File ""/home/florian/dev/bap/observer/server/__pypackages__/3.10/lib/django/db/models/sql/query.py"", line 1502, in add_q clause, _ = self._add_q(q_object, self.used_aliases) File ""/home/florian/dev/bap/observer/server/__pypackages__/3.10/lib/django/db/models/sql/query.py"", line 1532, in _add_q child_clause, needed_inner = self.build_filter( File ""/home/florian/dev/bap/observer/server/__pypackages__/3.10/lib/django/db/models/sql/query.py"", line 1370, in build_filter condition = filter_expr.resolve_expression(self, allow_joins=allow_joins) File ""/home/florian/dev/bap/observer/server/__pypackages__/3.10/lib/django/db/models/lookups.py"", line 174, in resolve_expression c.rhs = self.rhs.resolve_expression( AttributeError: 'bool' object has no attribute 'resolve_expression' }}}" Bug closed Database layer (models, ORM) 4.0 Release blocker fixed Florian Apolloner David Wobrock Ready for checkin 1 0 0 0 0 0