'Produce a proxied \'has\' expression using EXISTS.
This expression will be a composed product
using the :meth:`.RelationshipProperty.Comparator.any`
and/or :meth:`.RelationshipProperty.Comparator.has`
operators of the underlying proxied attributes.'

def has(self, criterion=None, **kwargs):

    if self._target_is_object:
        return self._comparator.has(getattr(self.target_class, self.value_attr).has(criterion, **kwargs))
    else:
        if ((criterion is not None) or kwargs):
            raise exc.ArgumentError('Non-empty    has()    not    allowed    for    column-targeted    association    proxy;    use    ==')
        return self._comparator.has()
