optimize pagination

Brightcells лет %!s(int64=9): %!d(string=назад)
Родитель
Сommit
b2cf473db5
1 измененных файлов с 8 добавлено и 6 удалено
  1. 8 6
      utils/page_utils.py

+ 8 - 6
utils/page_utils.py

@@ -3,13 +3,15 @@
3 3
 from django.db.models.query import QuerySet
4 4
 
5 5
 
6
-def pagination(queryset, page, num=10):
6
+def pagination(queryset, page, num=10, strict=False):
7 7
     """
8
-    DIY Pagination Funciton
8
+    Simple Pagination Funciton
9 9
     :param queryset:
10 10
     :param page:
11
-    :param num: the number of query for one page
12
-    :return: the query of the page, the number of query left after the page
11
+    :param num: number per page
12
+    :param strict: strict left number or not
13
+    :return: matched query, left number(default not strict)
13 14
     """
14
-    start, end, total = num * (page - 1), num * page, queryset.count() if isinstance(queryset, QuerySet) else len(queryset)
15
-    return queryset[start: end], max(total - end, 0)
15
+    start, end = num * (page - 1), num * page
16
+    return queryset[start: end], max(queryset.count() if isinstance(queryset, QuerySet) else len(queryset) - end,
17
+                                     0) if strict else len(queryset[end: end + 1])