From bdbe50a491ca41e7d4ebace47bfe8abe50a58211 Mon Sep 17 00:00:00 2001 From: François Freitag Date: Sun, 10 Jan 2016 17:54:57 +0100 Subject: Fixed #25546 -- Prevented duplicate queries with nested prefetch_related(). --- django/db/models/query.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'django') 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() -- cgit v1.3