In addition to the normal _add_filters, this one accept RedisField objects
        on the right part of a filter. The value will be fetched from redis when
        calling the collection.
        The filter value can also be a model instance, in which case its PK will
        be fetched when calling the collection, too.

def _add_filters(self, **filters):
        """
        In addition to the normal _add_filters, this one accept RedisField objects
        on the right part of a filter. The value will be fetched from redis when
        calling the collection.
        The filter value can also be a model instance, in which case its PK will
        be fetched when calling the collection, too.
        """
        string_filters = filters.copy()

        for key, value in filters.items():

            is_extended = False

            if isinstance(value, RedisField):
                # we will fetch the value when running the collection
                if (not isinstance(value, SingleValueField)
                    or getattr(value, '_instance', None) is None):
                    raise ValueError('If a field is used as a filter value, it '
                                     'must be a simple value field attached to '
                                     'an instance')
                is_extended = True

            elif isinstance(value, RedisModel):
                # we will fetch the PK when running the collection
                is_extended = True

            if is_extended:
                if self._field_is_pk(key):
                    # create an RawFilter which will be used in _get_pk
                    raw_filter = RawFilter(key, value)
                    self._lazy_collection['pks'].add(raw_filter)
                else:
                    # create an ParsedFilter which will be used in _prepare_sets
                    index, suffix, extra_field_parts = self._parse_filter_key(key)
                    parsed_filter = ParsedFilter(index, suffix, extra_field_parts, value)
                    self._lazy_collection['sets'].append(parsed_filter)

                string_filters.pop(key)

        super(ExtendedCollectionManager, self)._add_filters(**string_filters)

        return self