我们从Python开源项目中,提取了以下7个代码示例,用于说明如何使用google.appengine.ext.ndb.FilterNode()。
def _AddFilter(self, candidate_filter): """Checks a filter and sets it in the filter set. Args: candidate_filter: An NDB filter which may be added to the query info. Raises: AttributeError: if query on the object is already final. TypeError: if the filter is not a simple filter (FilterNode). ValueError: if the operator symbol in the filter is not equality. """ if self._query_final is not None: raise AttributeError('Can\'t add more filters. Query info is final.') if not isinstance(candidate_filter, ndb.FilterNode): raise TypeError('Only simple filters can be used. Received: %s.' % (candidate_filter,)) opsymbol = candidate_filter._FilterNode__opsymbol if opsymbol != '=': raise ValueError('Only equality filters allowed. Received: %s.' % (opsymbol,)) self._filters.add(candidate_filter)
def make_query(self, ns): """Make a query of entities within this range. Query options are not supported. They should be specified when the query is run. Args: ns: namespace of this query. Returns: a db.Query or ndb.Query, depends on the model class's type. """ if issubclass(self.model_class, db.Model): query = db.Query(self.model_class, namespace=ns) for f in self.filters: query.filter("%s %s" % (f[0], f[1]), f[2]) else: query = self.model_class.query(namespace=ns) for f in self.filters: query = query.filter(ndb.FilterNode(*f)) return query
def filter_ndb_query(self, query, filters=None): """Add query filter to restrict to this key range. Args: query: An ndb.Query instance. filters: optional list of filters to apply to the query. Each filter is a tuple: (<property_name_as_str>, <query_operation_as_str>, <value>). User filters are applied first. Returns: The input query restricted to this key range. """ assert _IsNdbQuery(query) if filters: for f in filters: query = query.filter(ndb.FilterNode(*f)) if self.include_start: start_comparator = ">=" else: start_comparator = ">" if self.include_end: end_comparator = "<=" else: end_comparator = "<" if self.key_start: query = query.filter(ndb.FilterNode("__key__", start_comparator, self.key_start)) if self.key_end: query = query.filter(ndb.FilterNode("__key__", end_comparator, self.key_end)) return query