added QuerySet.only
This commit is contained in:
parent
3762a69537
commit
8b1a39f2c1
@ -120,6 +120,7 @@ class QuerySet(object):
|
|||||||
self._accessed_collection = False
|
self._accessed_collection = False
|
||||||
self._query = {}
|
self._query = {}
|
||||||
self._where_clause = None
|
self._where_clause = None
|
||||||
|
self._loaded_fields = []
|
||||||
|
|
||||||
# If inheritance is allowed, only return instances and instances of
|
# If inheritance is allowed, only return instances and instances of
|
||||||
# subclasses of the class being used
|
# subclasses of the class being used
|
||||||
@ -220,7 +221,11 @@ class QuerySet(object):
|
|||||||
@property
|
@property
|
||||||
def _cursor(self):
|
def _cursor(self):
|
||||||
if self._cursor_obj is None:
|
if self._cursor_obj is None:
|
||||||
self._cursor_obj = self._collection.find(self._query)
|
cursor_args = {}
|
||||||
|
if self._loaded_fields:
|
||||||
|
cursor_args = {'fields': self._loaded_fields}
|
||||||
|
self._cursor_obj = self._collection.find(self._query,
|
||||||
|
**cursor_args)
|
||||||
# Apply where clauses to cursor
|
# Apply where clauses to cursor
|
||||||
if self._where_clause:
|
if self._where_clause:
|
||||||
self._cursor_obj.where(self._where_clause)
|
self._cursor_obj.where(self._where_clause)
|
||||||
@ -430,6 +435,10 @@ class QuerySet(object):
|
|||||||
elif isinstance(key, int):
|
elif isinstance(key, int):
|
||||||
return self._document._from_son(self._cursor[key])
|
return self._document._from_son(self._cursor[key])
|
||||||
|
|
||||||
|
def only(self, *fields):
|
||||||
|
self._loaded_fields = list(fields)
|
||||||
|
return self
|
||||||
|
|
||||||
def order_by(self, *keys):
|
def order_by(self, *keys):
|
||||||
"""Order the :class:`~mongoengine.queryset.QuerySet` by the keys. The
|
"""Order the :class:`~mongoengine.queryset.QuerySet` by the keys. The
|
||||||
order may be specified by prepending each of the keys by a + or a -.
|
order may be specified by prepending each of the keys by a + or a -.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user