diff options
| author | Adam Chainz <me@adamj.eu> | 2016-12-23 14:58:22 +0000 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-12-23 09:58:22 -0500 |
| commit | 6ebf8f9057893b802fa85599573886081f32edc9 (patch) | |
| tree | 207ff854d0a2b653b9eb4bee5ab9b98f33473572 | |
| parent | b8741c005873396de24a085fe9ab13d2348a306b (diff) | |
Refs #27624 -- Made QuerySet._prefetch_related_lookups immutable.
| -rw-r--r-- | django/db/models/query.py | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/django/db/models/query.py b/django/db/models/query.py index f96a5f13ff..6a0b1ca0ac 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -165,9 +165,9 @@ class QuerySet(object): self._result_cache = None self._sticky_filter = False self._for_write = False - self._prefetch_related_lookups = [] + self._prefetch_related_lookups = () self._prefetch_done = False - self._known_related_objects = {} # {rel_field, {pk: rel_obj}} + self._known_related_objects = {} # {rel_field: {pk: rel_obj}} self._iterable_class = ModelIterable self._fields = None @@ -863,9 +863,9 @@ class QuerySet(object): """ clone = self._clone() if lookups == (None,): - clone._prefetch_related_lookups = [] + clone._prefetch_related_lookups = () else: - clone._prefetch_related_lookups.extend(lookups) + clone._prefetch_related_lookups = clone._prefetch_related_lookups + lookups return clone def annotate(self, *args, **kwargs): @@ -1061,7 +1061,7 @@ class QuerySet(object): query.filter_is_sticky = True clone = self.__class__(model=self.model, query=query, using=self._db, hints=self._hints) clone._for_write = self._for_write - clone._prefetch_related_lookups = self._prefetch_related_lookups[:] + clone._prefetch_related_lookups = self._prefetch_related_lookups clone._known_related_objects = self._known_related_objects clone._iterable_class = self._iterable_class clone._fields = self._fields @@ -1543,13 +1543,13 @@ def prefetch_one_level(instances, prefetcher, lookup, level): # later (happens in nested prefetch_related). additional_lookups = [ copy.copy(additional_lookup) for additional_lookup - in getattr(rel_qs, '_prefetch_related_lookups', []) + in getattr(rel_qs, '_prefetch_related_lookups', ()) ] if additional_lookups: # Don't need to clone because the manager should have given us a fresh # instance, so we access an internal instead of using public interface # for performance reasons. - rel_qs._prefetch_related_lookups = [] + rel_qs._prefetch_related_lookups = () all_related_objects = list(rel_qs) |
