@@ -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
114121if hasattr (models .Manager , 'from_queryset' ):
0 commit comments