Skip to content

Commit 87efc58

Browse files
committed
Import the improved queryset_transform.py file from Towel
1 parent 13599a5 commit 87efc58

File tree

1 file changed

+17
-7
lines changed

1 file changed

+17
-7
lines changed

feincms/utils/queryset_transform.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
This allows you to build optimisations like "fetch all tags for these 10 rows"
1111
while 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

Comments
 (0)