From 9eb832b0481e9510be0390d1616d6197f5136e33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laura=20Kl=C3=BCnder?= Date: Fri, 16 Jun 2017 18:42:54 +0200 Subject: [PATCH] ManyToMany Managers should also look into prefetch cache --- src/c3nav/editor/wrappers.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/c3nav/editor/wrappers.py b/src/c3nav/editor/wrappers.py index bb39f5c5..8e511365 100644 --- a/src/c3nav/editor/wrappers.py +++ b/src/c3nav/editor/wrappers.py @@ -526,6 +526,9 @@ class ManyRelatedManagerWrapper(RelatedManagerWrapper): def _get_cache_name(self): return self._obj.prefetch_cache_name + def get_queryset(self): + return self.model.objects.filter(**self._obj.core_filters) + def set(self, objs, author=None): if author is None: author = self._author @@ -553,7 +556,11 @@ class ManyRelatedManagerWrapper(RelatedManagerWrapper): self._changeset.add_m2m_remove(self._obj.instance, name=self._get_cache_name(), value=pk, author=author) def all(self): - return self.model.objects.filter(**self._obj.core_filters) + try: + return self.instance._prefetched_objects_cache[self._get_cache_name()] + except(AttributeError, KeyError): + pass + return self.get_queryset().all() def create(self, *args, **kwargs): raise NotImplementedError