如何在Django Admin的分页“变更列表”页面上显示超过100个项目?

19 投票
3 回答
12408 浏览
提问于 2025-04-15 18:44

在某个模型的概览面板中,当我按月份筛选项目后,我需要把所有的项目都选中,然后创建一个包含这些项目信息的文档(有点像月度报告)。但是,当一个月有超过100个项目时,这就成了一个问题,因为Django会把筛选结果分页显示。

有没有办法把显示的项目数量从100增加到400,或者一次性选中所有筛选结果中的项目呢?

逐页选择所有项目,创建一个文档,然后再去下一页,创建另一个文档,最后再把这些文档合并,这种方法不可行。

3 个回答

0

你应该把 list_per_page 设置为 400,就像下面这样,这样每一页的变更列表中显示的项目数量就可以从默认的 100 增加到 400

# "admin.py"

@admin.register(Person)
class MyModelAdmin(admin.ModelAdmin):
    list_per_page = 400 # Here
3

如果你在讨论管理员相关的内容,可以看看这个链接

ModelAdmin.list_per_page
42

请查看 这个链接

在你的 ModelAdmin 定义中,设置 list_per_page

class MyModelAdmin(admin.ModelAdmin):
    list_per_page = 400

我认为你也可以在查询中添加 all 这个参数(也就是说,在你的网址后面加上 ?all),但这个方法只有在你有少于 200 个项目时才有效,而这个限制是写死在管理后台里的。因此,这个方法只有在你的项目数量超过 list_per_page(默认是 100)但少于 200 的情况下才有用。不过,当这种情况发生时,管理后台会给你提供一个链接,方便你查看所有项目。

撰写回答