def filter(self, values, filters=(), chain_sort=(), keys_only=False, previous_query = None): """Returns a query for the given values (creates '=' filters for this property and additionally applies filters. With 'chain_sort' you can additionally do some kind of "fake"-sorting of the results. It simply runs multiple queries and combines them into a ChainedQueries instance.""" if not isinstance(values, (tuple, list)): values = (values,) if previous_query is not None: filtered = previous_query else: if keys_only: filtered = self.model_class.all(keys_only=keys_only) else: filtered = self.model_class.all() for value in set(values): filtered = filtered.filter(self.name + ' =', value) filtered = get_filtered(filtered, *filters) if not chain_sort: return filtered queries = [] for filters in chain_sort: query = deepcopy(filtered) queries.append(get_filtered(query, *filters)) return ChainedQueries(queries)
def filter(self, values, filters=(), keys_only=False): """Returns a query for the given values (creates '=' filters for this property and additionally applies filters.""" if not isinstance(values, (tuple, list)): values = (values,) if keys_only: filtered = self.model_class.all(keys_only=keys_only) else: filtered = self.model_class.all() for value in set(values): filtered = filtered.filter(self.name + ' =', value) filtered = get_filtered(filtered, *filters) return filtered