Django Admin中“显示所有”超过200项

13 投票
3 回答
8070 浏览
提问于 2025-04-16 09:23

我现在在Django的管理后台有一个列表,这个列表分成了8页。

我想要一个按钮或者链接,可以在Django管理后台显示所有的列表项,即使这些项超过200个,同时还保持分页功能。

显示全部的链接正好满足我的需求,但它限制在200个项以内。有没有办法改变这个限制?(不想修改核心代码)。另外,有没有办法在模型管理中按需更改list_per_page的设置?

3 个回答

0

*显示全部链接会在list_max_show_all的值大于或等于总项目数时出现,而显示全部链接会在list_max_show_all的值小于总项目数时消失。*默认情况下,list_max_show_all的值是200。

所以,你需要把list_max_show_all的值设置得比200(默认值)更高,这样才能显示显示全部链接,列出所有项目,正如下方所示。同时,你还需要设置list_per_page,以便在每个分页的变更列表页面上列出特定数量的项目。默认情况下,list_per_page的值是100

# "admin.py"

@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    list_max_show_all = 400 # Changes from 200 (Default) to 400  
    list_per_page = 300 # Changes from 100 (Default) to 300
0

我不太确定你说的“按需”修改 list_per_page 是不是你想要的意思,但你几乎可以肯定地查询数据库。虽然这样做可能会有点麻烦,但根据你的使用场景,管理员可以登录,修改他们的偏好设置,然后再继续处理真正重要的模型。
举个例子:

#models.py
class PageLength(models.Model):
     page_length = models.IntegerField()

#admin.py

class FooAdmin(admin.ModelAdmin):
     list_per_page = PageLength.objects.get(pk=1) 
22

你可以在你的管理类中修改 list_max_show_alllist_per_page 这两个属性。

class FooAdmin(admin.ModelAdmin):
    list_max_show_all = 500
    list_per_page = 200

这个方法适用于 Django 1.4 及更新版本。查看手册。

撰写回答