Skip to content

Commit 0e73afe

Browse files
committed
Prepare queryset_transform for Django 1.9
1 parent 93e10e3 commit 0e73afe

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

feincms/utils/queryset_transform.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,10 @@ class TransformQuerySet(models.query.QuerySet):
9090
def __init__(self, *args, **kwargs):
9191
super(TransformQuerySet, self).__init__(*args, **kwargs)
9292
self._transform_fns = []
93+
self._orig_iterable_class = getattr(self, '_iterable_class', None)
9394

94-
def _clone(self, klass=None, setup=False, **kw):
95-
c = super(TransformQuerySet, self)._clone(klass, setup, **kw)
95+
def _clone(self, *args, **kwargs):
96+
c = super(TransformQuerySet, self)._clone(*args, **kwargs)
9697
c._transform_fns = self._transform_fns[:]
9798
return c
9899

@@ -103,12 +104,18 @@ def transform(self, *fn):
103104

104105
def iterator(self):
105106
result_iter = super(TransformQuerySet, self).iterator()
106-
if self._transform_fns:
107-
results = list(result_iter)
108-
for fn in self._transform_fns:
109-
fn(results)
110-
return iter(results)
111-
return result_iter
107+
108+
if not self._transform_fns:
109+
return result_iter
110+
111+
if getattr(self, '_iterable_class', None) != self._orig_iterable_class:
112+
# Do not process the result of values() and values_list()
113+
return result_iter
114+
115+
results = list(result_iter)
116+
for fn in self._transform_fns:
117+
fn(results)
118+
return iter(results)
112119

113120

114121
if hasattr(models.Manager, 'from_queryset'):

0 commit comments

Comments
 (0)