mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #12876 -- Corrected a problem with recursive relations under deepcopy. Thanks to elachuni for the patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12700 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -148,7 +148,7 @@ class Query(object): | ||||
|         return sql % params | ||||
|  | ||||
|     def __deepcopy__(self, memo): | ||||
|         result= self.clone() | ||||
|         result = self.clone(memo=memo) | ||||
|         memo[id(self)] = result | ||||
|         return result | ||||
|  | ||||
| @@ -199,7 +199,7 @@ class Query(object): | ||||
|         """ | ||||
|         return self.model._meta | ||||
|  | ||||
|     def clone(self, klass=None, **kwargs): | ||||
|     def clone(self, klass=None, memo=None, **kwargs): | ||||
|         """ | ||||
|         Creates a copy of the current instance. The 'kwargs' parameter can be | ||||
|         used by clients to update attributes after copying has taken place. | ||||
| @@ -223,19 +223,19 @@ class Query(object): | ||||
|         obj.dupe_avoidance = self.dupe_avoidance.copy() | ||||
|         obj.select = self.select[:] | ||||
|         obj.tables = self.tables[:] | ||||
|         obj.where = deepcopy(self.where) | ||||
|         obj.where = deepcopy(self.where, memo=memo) | ||||
|         obj.where_class = self.where_class | ||||
|         if self.group_by is None: | ||||
|             obj.group_by = None | ||||
|         else: | ||||
|             obj.group_by = self.group_by[:] | ||||
|         obj.having = deepcopy(self.having) | ||||
|         obj.having = deepcopy(self.having, memo=memo) | ||||
|         obj.order_by = self.order_by[:] | ||||
|         obj.low_mark, obj.high_mark = self.low_mark, self.high_mark | ||||
|         obj.distinct = self.distinct | ||||
|         obj.select_related = self.select_related | ||||
|         obj.related_select_cols = [] | ||||
|         obj.aggregates = deepcopy(self.aggregates) | ||||
|         obj.aggregates = deepcopy(self.aggregates, memo=memo) | ||||
|         if self.aggregate_select_mask is None: | ||||
|             obj.aggregate_select_mask = None | ||||
|         else: | ||||
| @@ -256,7 +256,7 @@ class Query(object): | ||||
|             obj._extra_select_cache = self._extra_select_cache.copy() | ||||
|         obj.extra_tables = self.extra_tables | ||||
|         obj.extra_order_by = self.extra_order_by | ||||
|         obj.deferred_loading = deepcopy(self.deferred_loading) | ||||
|         obj.deferred_loading = deepcopy(self.deferred_loading, memo=memo) | ||||
|         if self.filter_is_sticky and self.used_aliases: | ||||
|             obj.used_aliases = self.used_aliases.copy() | ||||
|         else: | ||||
|   | ||||
		Reference in New Issue
	
	Block a user