diff options
| author | François Freitag <francois.freitag@polyconseil.fr> | 2016-01-10 17:54:57 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-01-26 07:20:13 -0500 |
| commit | bdbe50a491ca41e7d4ebace47bfe8abe50a58211 (patch) | |
| tree | 38f5b7953979f727267a5886488ecdfc7a5245ca /django | |
| parent | 13023ba86746980aace2341ba32a9419e7567751 (diff) | |
Fixed #25546 -- Prevented duplicate queries with nested prefetch_related().
Diffstat (limited to 'django')
| -rw-r--r-- | django/db/models/query.py | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/django/db/models/query.py b/django/db/models/query.py index b1bebcaca0..5e2e5d7917 100644 --- a/django/db/models/query.py +++ b/django/db/models/query.py @@ -1521,6 +1521,7 @@ def get_prefetcher(instance, attr): rel_obj = getattr(instance, attr) if hasattr(rel_obj, 'get_prefetch_queryset'): prefetcher = rel_obj + is_fetched = attr in instance._prefetched_objects_cache return prefetcher, rel_obj_descriptor, attr_found, is_fetched @@ -1597,6 +1598,7 @@ def prefetch_one_level(instances, prefetcher, lookup, level): else: if as_attr: setattr(obj, to_attr, vals) + obj._prefetched_objects_cache[cache_name] = vals else: # Cache in the QuerySet.all(). qs = getattr(obj, to_attr).all() |
