Django Admin中“显示所有”超过200项
我现在在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_all
和 list_per_page
这两个属性。
class FooAdmin(admin.ModelAdmin):
list_max_show_all = 500
list_per_page = 200
这个方法适用于 Django 1.4 及更新版本。查看手册。