summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Chainz <me@adamj.eu>2016-12-23 14:58:22 +0000
committerTim Graham <timograham@gmail.com>2016-12-23 09:58:22 -0500
commit6ebf8f9057893b802fa85599573886081f32edc9 (patch)
tree207ff854d0a2b653b9eb4bee5ab9b98f33473572
parentb8741c005873396de24a085fe9ab13d2348a306b (diff)
Refs #27624 -- Made QuerySet._prefetch_related_lookups immutable.
-rw-r--r--django/db/models/query.py14
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)