Returns a new QuerySet instance with the args ANDed to the existing
        set.

def filter(self, **kwargs):
        """
        Returns a new QuerySet instance with the args ANDed to the existing
        set.
        """
        if kwargs:
            assert self.query.can_filter(), "Cannot filter a query once a slice has been taken."

        clone = self._clone()
        clone.query.add_filters(**kwargs)

        return clone