首页 > 解决方案 > 如何在不更改结果编号的情况下限制 Django 管理员中的分页

问题描述

我有一个 Django 管理页面,我希望限制页面数量而不更改 ChangeList 中的对象数量。

例如,我有 1000 个结果的 ChangeList,每页限制 20 个结果。我希望将分页偏移量限制为 10 页,但仍然存在我有 1000 个结果。因此,用户将能够看到计数,但无法“跳转”到“远”偏移量。

标签: pythondjangopaginationpaginator

解决方案


所以在@bdoubleu的提示后,我找到了一个简单优雅的解决方案:

  1. templates/admin/change_list.html补充:
{% extends "admin/change_list.html" %}
{% block pagination %}{% limited_pagination cl %}{% endblock %}

  1. 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)


推荐阅读