如何在不更改结果编号的情况下限制 Django admin 中的分页
How to limit paging in Django admin without changing the results number
我有一个 Django 管理页面,我希望在不更改 ChangeList 中的对象数量的情况下限制页面数量。
例如我有包含 1000 个结果的 ChangeList,每个 page.and 限制 20 个结果我希望将分页偏移量限制为 10 页但仍然存在我有 1000 个结果。因此,用户将能够看到计数,但无法 "jump" 到 "far" 偏移量。
所以在 @bdoubleu 的提示下,我找到了一个简单优雅的解决方案:
- 在
templates/admin/change_list.html
添加:
{% extends "admin/change_list.html" %}
{% block pagination %}{% limited_pagination cl %}{% endblock %}
- 在
templatetags/admin_list.py
中(尽管我假设任何其他位置也可以)添加:
from django.contrib.admin.templatetags import admin_list
@register.inclusion_tag('admin/pagination.html', takes_context=True)
def limited_pagination(context, cl):
if somecondition:
cl.paginator._num_pages = 20
return admin_list.pagination(cl)
我有一个 Django 管理页面,我希望在不更改 ChangeList 中的对象数量的情况下限制页面数量。
例如我有包含 1000 个结果的 ChangeList,每个 page.and 限制 20 个结果我希望将分页偏移量限制为 10 页但仍然存在我有 1000 个结果。因此,用户将能够看到计数,但无法 "jump" 到 "far" 偏移量。
所以在 @bdoubleu 的提示下,我找到了一个简单优雅的解决方案:
- 在
templates/admin/change_list.html
添加:
{% extends "admin/change_list.html" %}
{% block pagination %}{% limited_pagination cl %}{% endblock %}
- 在
templatetags/admin_list.py
中(尽管我假设任何其他位置也可以)添加:
from django.contrib.admin.templatetags import admin_list
@register.inclusion_tag('admin/pagination.html', takes_context=True)
def limited_pagination(context, cl):
if somecondition:
cl.paginator._num_pages = 20
return admin_list.pagination(cl)