'Return the recordset of all the records in ``self`` that are not in
``other``. Note that recordset order is preserved.'

def __sub__(self, other):

    if ((not isinstance(other, BaseModel)) or (self._name != other._name)):
        raise TypeError(('Mixing    apples    and    oranges:    %s    -    %s' % (self, other)))
    other_ids = set(other._ids)
    return self.browse([id for id in self._ids if (id not in other_ids)])
