diff --git a/django/contrib/admin/templatetags/admin_list.py b/django/contrib/admin/templatetags/admin_list.py index 2352f19451..f075305af2 100644 --- a/django/contrib/admin/templatetags/admin_list.py +++ b/django/contrib/admin/templatetags/admin_list.py @@ -1,6 +1,6 @@ from django import template from django.conf import settings -from django.contrib.admin.views.main import MAX_SHOW_ALL_ALLOWED, DEFAULT_RESULTS_PER_PAGE, ALL_VAR +from django.contrib.admin.views.main import MAX_SHOW_ALL_ALLOWED, ALL_VAR from django.contrib.admin.views.main import ORDER_VAR, ORDER_TYPE_VAR, PAGE_VAR, SEARCH_VAR from django.contrib.admin.views.main import IS_POPUP_VAR, EMPTY_CHANGELIST_VALUE, MONTHS from django.core.exceptions import ObjectDoesNotExist diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py index 6c226587e0..1b47956cf1 100644 --- a/django/contrib/admin/views/main.py +++ b/django/contrib/admin/views/main.py @@ -27,7 +27,6 @@ except ImportError: MAX_SHOW_ALL_ALLOWED = 200 # Changelist settings -DEFAULT_RESULTS_PER_PAGE = 100 ALL_VAR = 'all' ORDER_VAR = 'o' ORDER_TYPE_VAR = 'ot' @@ -589,7 +588,7 @@ class ChangeList(object): return '?' + '&'.join(['%s=%s' % (k, v) for k, v in p.items()]).replace(' ', '%20') def get_results(self, request): - paginator = ObjectPaginator(self.query_set, DEFAULT_RESULTS_PER_PAGE) + paginator = ObjectPaginator(self.query_set, self.lookup_opts.admin.list_per_page) # Get the number of objects, with admin filters applied. try: @@ -611,7 +610,7 @@ class ChangeList(object): full_result_count = self.manager.count() can_show_all = result_count <= MAX_SHOW_ALL_ALLOWED - multi_page = result_count > DEFAULT_RESULTS_PER_PAGE + multi_page = result_count > self.lookup_opts.admin.list_per_page # Get the list of objects to display on this page. if (self.show_all and can_show_all) or not multi_page: diff --git a/django/db/models/options.py b/django/db/models/options.py index 6656c14207..01591c13a3 100644 --- a/django/db/models/options.py +++ b/django/db/models/options.py @@ -196,7 +196,7 @@ class Options: class AdminOptions: def __init__(self, fields=None, js=None, list_display=None, list_filter=None, date_hierarchy=None, save_as=False, ordering=None, search_fields=None, - save_on_top=False, list_select_related=False, manager=None): + save_on_top=False, list_select_related=False, manager=None, list_per_page=100): self.fields = fields self.js = js or [] self.list_display = list_display or ['__str__'] @@ -206,6 +206,7 @@ class AdminOptions: self.search_fields = search_fields or [] self.save_on_top = save_on_top self.list_select_related = list_select_related + self.list_per_page = list_per_page self.manager = manager or Manager() def get_field_sets(self, opts):