Changeset 7865
- Timestamp:
- 07/07/08 21:08:33 (1 year ago)
- Files:
-
- django/trunk/django/contrib/admin/views/main.py (modified) (1 diff)
- django/trunk/django/core/paginator.py (modified) (2 diffs)
- django/trunk/django/views/generic/list_detail.py (modified) (1 diff)
- django/trunk/docs/pagination.txt (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/contrib/admin/views/main.py
r7491 r7865 6 6 from django.contrib.contenttypes.models import ContentType 7 7 from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist, PermissionDenied 8 from django.core.paginator import QuerySetPaginator, InvalidPage8 from django.core.paginator import Paginator, InvalidPage 9 9 from django.shortcuts import get_object_or_404, render_to_response 10 10 from django.db import models django/trunk/django/core/paginator.py
r7819 r7865 37 37 "Returns the total number of objects, across all pages." 38 38 if self._count is None: 39 self._count = len(self.object_list) 39 from django.db.models.query import QuerySet 40 if isinstance(self.object_list, QuerySet): 41 self._count = self.object_list.count() 42 else: 43 self._count = len(self.object_list) 40 44 return self._count 41 45 count = property(_get_count) … … 62 66 page_range = property(_get_page_range) 63 67 64 class QuerySetPaginator(Paginator): 65 """ 66 Like Paginator, but works on QuerySets. 67 """ 68 def _get_count(self): 69 if self._count is None: 70 self._count = self.object_list.count() 71 return self._count 72 count = property(_get_count) 68 QuerySetPaginator = Paginator # For backwards-compatibility. 73 69 74 70 class Page(object): django/trunk/django/views/generic/list_detail.py
r7352 r7865 2 2 from django.http import Http404, HttpResponse 3 3 from django.core.xheaders import populate_xheaders 4 from django.core.paginator import QuerySetPaginator, InvalidPage4 from django.core.paginator import Paginator, InvalidPage 5 5 from django.core.exceptions import ObjectDoesNotExist 6 6 django/trunk/docs/pagination.txt
r7311 r7865 60 60 InvalidPage 61 61 62 Note that you can give ``Paginator`` a list/tuple or a Django ``QuerySet``. The 63 only difference is in implementation; if you pass a ``QuerySet``, the 64 ``Paginator`` will call its ``count()`` method instead of using ``len()``, 65 because the former is more efficient. 66 62 67 ``Paginator`` objects 63 68 ===================== … … 117 122 ``paginator`` -- The associated ``Paginator`` object. 118 123 119 ``QuerySetPaginator`` objects120 =============================121 122 Use ``QuerySetPaginator`` instead of ``Paginator`` if you're paginating across123 a ``QuerySet`` from Django's database API. This is slightly more efficient, and124 there are no API differences between the two classes.125 126 124 The legacy ``ObjectPaginator`` class 127 125 ====================================
