Skip to content

Commit 1159080

Browse files
committed
pagination performance mongoengine
1 parent 60d41c4 commit 1159080

File tree

1 file changed

+13
-7
lines changed

1 file changed

+13
-7
lines changed

flask_mongoengine/pagination.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,20 @@ def __init__(self, iterable, page, per_page):
1515
self.iterable = iterable
1616
self.page = page
1717
self.per_page = per_page
18-
self.total = len(iterable)
1918

20-
start_index = (page - 1) * per_page
21-
end_index = page * per_page
22-
23-
self.items = iterable[start_index:end_index]
24-
if isinstance(self.items, QuerySet):
25-
self.items = self.items.select_related()
19+
if isinstance(self.iterable, QuerySet):
20+
self.total = iterable.count()
21+
self.items = (
22+
self.iterable.skip(self.per_page * (self.page - 1))
23+
.limit(self.per_page)
24+
.select_related()
25+
)
26+
else:
27+
start_index = (page - 1) * per_page
28+
end_index = page * per_page
29+
30+
self.total = len(iterable)
31+
self.items = iterable[start_index:end_index]
2632
if not self.items and page != 1:
2733
abort(404)
2834

0 commit comments

Comments
 (0)