1010This allows you to build optimisations like "fetch all tags for these 10 rows"
1111while still benefiting from Django's lazy QuerySet evaluation.
1212
13- For example:
13+ For example::
1414
1515 def lookup_tags(item_qs):
1616 item_pks = [item.pk for item in item_qs]
@@ -33,7 +33,7 @@ def lookup_tags(item_qs):
3333 for item in qs:
3434 print item, item.fetched_tags
3535
36- Prints:
36+ Prints::
3737
3838 Winter comes to Ogglesbrook [<sledging>, <snow>, <winter>, <skating>]
3939 Summer now [<skating>, <sunny>]
@@ -94,9 +94,9 @@ def _clone(self, klass=None, setup=False, **kw):
9494 c ._transform_fns = self ._transform_fns [:]
9595 return c
9696
97- def transform (self , fn ):
97+ def transform (self , * fn ):
9898 c = self ._clone ()
99- c ._transform_fns .append (fn )
99+ c ._transform_fns .extend (fn )
100100 return c
101101
102102 def iterator (self ):
@@ -109,6 +109,16 @@ def iterator(self):
109109 return result_iter
110110
111111
112- class TransformManager (models .Manager ):
113- def get_query_set (self ):
114- return TransformQuerySet (self .model , using = self ._db )
112+ if hasattr (models .Manager , 'from_queryset' ):
113+ TransformManager = models .Manager .from_queryset (TransformQuerySet )
114+
115+ else :
116+ class TransformManager (models .Manager ):
117+ def get_queryset (self ):
118+ return TransformQuerySet (self .model , using = self ._db )
119+
120+ def get_query_set (self ):
121+ return TransformQuerySet (self .model , using = self ._db )
122+
123+ def transform (self , * fn ):
124+ return self .get_query_set ().transform (* fn )
0 commit comments