optimize pagination

Brightcells 9 年之前
父节点
当前提交
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])