mirror of
https://github.com/django/django.git
synced 2025-06-05 03:29:12 +00:00
magic-removal: Implemented Manager.all() and changed Manager so that it doesn't cache.
git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@2194 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
836478fa74
commit
a6cf387d6b
@ -35,6 +35,7 @@ class Manager(QuerySet):
|
|||||||
self.creation_counter = Manager.creation_counter
|
self.creation_counter = Manager.creation_counter
|
||||||
Manager.creation_counter += 1
|
Manager.creation_counter += 1
|
||||||
self.model = None
|
self.model = None
|
||||||
|
self._use_cache = False
|
||||||
|
|
||||||
def _prepare(self):
|
def _prepare(self):
|
||||||
if self.model._meta.get_latest_by:
|
if self.model._meta.get_latest_by:
|
||||||
@ -53,6 +54,10 @@ class Manager(QuerySet):
|
|||||||
kwargs['limit'] = 1
|
kwargs['limit'] = 1
|
||||||
return self.get_object(*args, **kwargs)
|
return self.get_object(*args, **kwargs)
|
||||||
|
|
||||||
|
def all(self):
|
||||||
|
# Returns a caching QuerySet.
|
||||||
|
return QuerySet(self.model)
|
||||||
|
|
||||||
def add(self, **kwargs):
|
def add(self, **kwargs):
|
||||||
kwargs.update(self.core_values)
|
kwargs.update(self.core_values)
|
||||||
new_obj = self.model(**kwargs)
|
new_obj = self.model(**kwargs)
|
||||||
|
@ -63,11 +63,8 @@ class QuerySet(object):
|
|||||||
# Dictionary of lookup parameters to apply to every _get_sql_clause().
|
# Dictionary of lookup parameters to apply to every _get_sql_clause().
|
||||||
core_filters = {}
|
core_filters = {}
|
||||||
|
|
||||||
# Subclasses need to provide 'self.model' attribute for this class
|
def __init__(self, model=None):
|
||||||
# to be able to function.
|
self.model = model
|
||||||
model = None
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
self._filters = Q(**(self.core_filters))
|
self._filters = Q(**(self.core_filters))
|
||||||
self._order_by = None # Ordering, e.g. ('date', '-name'). If None, use model's ordering.
|
self._order_by = None # Ordering, e.g. ('date', '-name'). If None, use model's ordering.
|
||||||
self._select_related = False # Whether to fill cache for related objects.
|
self._select_related = False # Whether to fill cache for related objects.
|
||||||
@ -79,11 +76,15 @@ class QuerySet(object):
|
|||||||
self._offset = None # OFFSET clause
|
self._offset = None # OFFSET clause
|
||||||
self._limit = None # LIMIT clause
|
self._limit = None # LIMIT clause
|
||||||
self._result_cache = None
|
self._result_cache = None
|
||||||
|
self._use_cache = True
|
||||||
|
|
||||||
########################
|
########################
|
||||||
# PYTHON MAGIC METHODS #
|
# PYTHON MAGIC METHODS #
|
||||||
########################
|
########################
|
||||||
|
|
||||||
|
def __repr__(self):
|
||||||
|
return repr(self._get_data())
|
||||||
|
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
return len(self._get_data())
|
return len(self._get_data())
|
||||||
|
|
||||||
@ -313,10 +314,12 @@ class QuerySet(object):
|
|||||||
return combined
|
return combined
|
||||||
|
|
||||||
def _get_data(self):
|
def _get_data(self):
|
||||||
return list(self.iterator())
|
if self._use_cache:
|
||||||
# if self._result_cache is None:
|
if self._result_cache is None:
|
||||||
# self._result_cache = list(self.iterator())
|
self._result_cache = list(self.iterator())
|
||||||
# return self._result_cache
|
return self._result_cache
|
||||||
|
else:
|
||||||
|
return list(self.iterator())
|
||||||
|
|
||||||
def _get_sql_clause(self, allow_joins):
|
def _get_sql_clause(self, allow_joins):
|
||||||
opts = self.model._meta
|
opts = self.model._meta
|
||||||
|
Loading…
x
Reference in New Issue
Block a user