def when_values(self, **criteria):
        """
        By default, ``Behold`` objects call ``str()`` on all variables before
        sending them to the output stream.  This method enables you to filter on
        those extracted string representations.  The syntax is exactly like that
        of the ``when_context()`` method.  Here is an example.

        .. code-block:: python

           from behold import Behold, Item

           items = [
              Item(a=1, b=2),
              Item(c=3, d=4),
           ]

           for item in items:
              # You can filter on the string representation
              Behold(tag='first').when_values(a='1').show(item)

              # Behold is smart enough to transform your criteria to strings
              # so this also works
              Behold(tag='second').when_values(a=1).show(item)

              # Because the string representation is not present in the local
              # scope, you must use Django-query-like syntax for logical
              # operations.
              Behold(tag='third').when_values(a__gte=1).show(item)
        """
        criteria = {k: str(v) for k, v in criteria.items()}
        self._add_value_filters(**criteria)
        return self