Commit ebcfa9c0 by Roman Krejcik

Query.exists() implemented using count, without fetching data. Added __len__

parent 4f7f66fe
...@@ -101,6 +101,9 @@ class Queryset(object): ...@@ -101,6 +101,9 @@ class Queryset(object):
def __iter__(self): def __iter__(self):
return iter(self._fetch()) return iter(self._fetch())
def __len__(self):
return self._fetch(count=True)
def _fetch(self, count=False): def _fetch(self, count=False):
""" """
Return a list of objects matching query, or if count == True return Return a list of objects matching query, or if count == True return
...@@ -122,8 +125,7 @@ class Queryset(object): ...@@ -122,8 +125,7 @@ class Queryset(object):
attr, operator = Queryset.extract_filter_operator(name) attr, operator = Queryset.extract_filter_operator(name)
if operator is None: if operator is None:
self._where[attr] = parse_value self._where[attr] = parse_value
else: elif operator == 'relatedTo':
if operator == 'relatedTo':
self._where['$' + operator] = parse_value self._where['$' + operator] = parse_value
else: else:
try: try:
...@@ -140,11 +142,10 @@ class Queryset(object): ...@@ -140,11 +142,10 @@ class Queryset(object):
return self return self
def count(self): def count(self):
return self._fetch(count=True) return len(self)
def exists(self): def exists(self):
results = self._fetch() return bool(self)
return len(results) > 0
def get(self): def get(self):
results = self._fetch() results = self._fetch()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment