  
      def process_rhs(self, compiler, connection):
          rhs, rhs_params = super(GISLookup, self).process_rhs(compiler, connection)
  
          geom = self.rhs
          if isinstance(self.rhs, Col):
              # Make sure the F Expression destination field exists, and
              # set an `srid` attribute with the same as that of the
 
</s> remove         if lookup_type == 'isnull':
            return bool(value)
        else:
 </s> add         if lookup_type == 'contains':
            # 'contains' name might conflict with the "normal" contains lookup,
            # for which the value is not prepared, but left as-is. </s> remove         return obj.get_compiler(connection=self.connection).as_sql()
 </s> add         return obj.get_compiler(connection=self.connection).as_sql(subquery=True)
        if hasattr(self.rhs, '_as_sql'):
            # If rhs is some QuerySet, don't touch it
            return rhs, rhs_params
  
      def process_rhs(self, compiler, connection):
          rhs, rhs_params = super(GISLookup, self).process_rhs(compiler, connection)
        if hasattr(self.rhs, '_as_sql'):
            # If rhs is some QuerySet, don't touch it
            return rhs, rhs_params
  
          geom = self.rhs
          if isinstance(self.rhs, Col):
              # Make sure the F Expression destination field exists, and
              # set an `srid` attribute with the same as that of the
keep keep add keep keep keep keep keep
 Fixed #14483 -- Allowed using subqueries with GIS lookups 
django/contrib/gis/db/models/lookups.py