Based on my analysis of the issue and the hints provided, I can see that the fix requires adding validation to the `IsNull` class's `as_sql` method in `django/db/models/lookups.py` to raise a `ValueError` when a non-boolean value is passed to the `__isnull` lookup. Here is the patch: --- a/django/db/models/lookups.py +++ b/django/db/models/lookups.py @@ -461,6 +461,11 @@ class IsNull(BuiltinLookup): prepare_rhs = False def as_sql(self, compiler, connection): + if not isinstance(self.rhs, bool): + raise ValueError( + 'The QuerySet value for an isnull lookup must be True or ' + 'False.' + ) sql, params = compiler.compile(self.lhs) if self.rhs: return "%s IS NULL" % sql, params