mirror of
https://github.com/django/django.git
synced 2025-09-15 13:39:11 +00:00
magic-removal: Moved delete() from Manager to QuerySet
git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@2166 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
43179e41ae
commit
f771586deb
@ -35,32 +35,7 @@ dispatcher.connect(ensure_default_manager, signal=signals.class_prepared)
|
|||||||
# params=id_list)
|
# params=id_list)
|
||||||
# obj_list = list(new_query)
|
# obj_list = list(new_query)
|
||||||
# return dict([(obj._get_pk_val(), obj) for obj in obj_list])
|
# return dict([(obj._get_pk_val(), obj) for obj in obj_list])
|
||||||
#
|
|
||||||
# def delete(self, **kwargs):
|
|
||||||
# # Remove the DELETE_ALL argument, if it exists.
|
|
||||||
# delete_all = kwargs.pop('DELETE_ALL', False)
|
|
||||||
#
|
|
||||||
# # Check for at least one query argument.
|
|
||||||
# if not kwargs and not delete_all:
|
|
||||||
# raise TypeError, "SAFETY MECHANISM: Specify DELETE_ALL=True if you actually want to delete all data."
|
|
||||||
#
|
|
||||||
# if kwargs:
|
|
||||||
# del_query = self.filter(**kwargs)
|
|
||||||
# else:
|
|
||||||
# del_query = self._clone()
|
|
||||||
# # disable non-supported fields
|
|
||||||
# del_query._select_related = False
|
|
||||||
# del_query._select = {}
|
|
||||||
# del_query._order_by = []
|
|
||||||
# del_query._offset = None
|
|
||||||
# del_query._limit = None
|
|
||||||
#
|
|
||||||
# opts = self.klass._meta
|
|
||||||
#
|
|
||||||
# # Perform the SQL delete
|
|
||||||
# cursor = connection.cursor()
|
|
||||||
# _, sql, params = del_query._get_sql_clause(False)
|
|
||||||
# cursor.execute("DELETE " + sql, params)
|
|
||||||
|
|
||||||
class Manager(QuerySet):
|
class Manager(QuerySet):
|
||||||
# Tracks each time a Manager instance is created. Used to retain order.
|
# Tracks each time a Manager instance is created. Used to retain order.
|
||||||
@ -88,30 +63,6 @@ class Manager(QuerySet):
|
|||||||
if not hasattr(klass, '_default_manager') or self.creation_counter < klass._default_manager.creation_counter:
|
if not hasattr(klass, '_default_manager') or self.creation_counter < klass._default_manager.creation_counter:
|
||||||
klass._default_manager = self
|
klass._default_manager = self
|
||||||
|
|
||||||
def delete(self, *args, **kwargs):
|
|
||||||
num_args = len(args) + len(kwargs)
|
|
||||||
|
|
||||||
# Remove the DELETE_ALL argument, if it exists.
|
|
||||||
delete_all = kwargs.pop('DELETE_ALL', False)
|
|
||||||
|
|
||||||
# Check for at least one query argument.
|
|
||||||
if num_args == 0 and not delete_all:
|
|
||||||
raise TypeError, "SAFETY MECHANISM: Specify DELETE_ALL=True if you actually want to delete all data."
|
|
||||||
|
|
||||||
# disable non-supported fields
|
|
||||||
kwargs['select_related'] = False
|
|
||||||
kwargs['select'] = {}
|
|
||||||
kwargs['order_by'] = []
|
|
||||||
kwargs['offset'] = None
|
|
||||||
kwargs['limit'] = None
|
|
||||||
|
|
||||||
opts = self.klass._meta
|
|
||||||
|
|
||||||
# Perform the SQL delete
|
|
||||||
cursor = connection.cursor()
|
|
||||||
_, sql, params = self._get_sql_clause(False, *args, **kwargs)
|
|
||||||
cursor.execute("DELETE " + sql, params)
|
|
||||||
|
|
||||||
def in_bulk(self, id_list, *args, **kwargs):
|
def in_bulk(self, id_list, *args, **kwargs):
|
||||||
assert isinstance(id_list, list), "get_in_bulk() must be provided with a list of IDs."
|
assert isinstance(id_list, list), "get_in_bulk() must be provided with a list of IDs."
|
||||||
assert id_list != [], "get_in_bulk() cannot be passed an empty ID list."
|
assert id_list != [], "get_in_bulk() cannot be passed an empty ID list."
|
||||||
|
@ -138,6 +138,34 @@ class QuerySet(object):
|
|||||||
assert len(obj_list) == 1, "get() returned more than one %s -- it returned %s! Lookup parameters were %s" % (self.klass._meta.object_name, len(obj_list), kwargs)
|
assert len(obj_list) == 1, "get() returned more than one %s -- it returned %s! Lookup parameters were %s" % (self.klass._meta.object_name, len(obj_list), kwargs)
|
||||||
return obj_list[0]
|
return obj_list[0]
|
||||||
|
|
||||||
|
def delete(self, **kwargs):
|
||||||
|
"""
|
||||||
|
Deletes the records with the given kwargs. If no kwargs are given,
|
||||||
|
deletes records in the current QuerySet.
|
||||||
|
"""
|
||||||
|
# Remove the DELETE_ALL argument, if it exists.
|
||||||
|
delete_all = kwargs.pop('DELETE_ALL', False)
|
||||||
|
|
||||||
|
# Check for at least one query argument.
|
||||||
|
if not kwargs and not delete_all:
|
||||||
|
raise TypeError, "SAFETY MECHANISM: Specify DELETE_ALL=True if you actually want to delete all data."
|
||||||
|
|
||||||
|
if kwargs:
|
||||||
|
del_query = self.filter(**kwargs)
|
||||||
|
else:
|
||||||
|
del_query = self._clone()
|
||||||
|
# disable non-supported fields
|
||||||
|
del_query._select_related = False
|
||||||
|
del_query._select = {}
|
||||||
|
del_query._order_by = []
|
||||||
|
del_query._offset = None
|
||||||
|
del_query._limit = None
|
||||||
|
|
||||||
|
# Perform the SQL delete
|
||||||
|
cursor = connection.cursor()
|
||||||
|
_, sql, params = del_query._get_sql_clause(False)
|
||||||
|
cursor.execute("DELETE " + sql, params)
|
||||||
|
|
||||||
#############################################
|
#############################################
|
||||||
# PUBLIC METHODS THAT RETURN A NEW QUERYSET #
|
# PUBLIC METHODS THAT RETURN A NEW QUERYSET #
|
||||||
#############################################
|
#############################################
|
||||||
@ -292,14 +320,6 @@ class QuerySet(object):
|
|||||||
# combined._filter = self._filter | other._filter
|
# combined._filter = self._filter | other._filter
|
||||||
# return combined
|
# return combined
|
||||||
#
|
#
|
||||||
# def _fetch_data(self):
|
|
||||||
# if self._use_cache:
|
|
||||||
# if self._result_cache is None:
|
|
||||||
# self._result_cache = list(self.get_iterator())
|
|
||||||
# return self._result_cache
|
|
||||||
# else:
|
|
||||||
# return list(self.get_iterator())
|
|
||||||
#
|
|
||||||
# def __getitem__(self, k):
|
# def __getitem__(self, k):
|
||||||
# """Retrieve an item or slice from the set of results"""
|
# """Retrieve an item or slice from the set of results"""
|
||||||
# # getitem can't return query instances, because .filter()
|
# # getitem can't return query instances, because .filter()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user