管理中所有模型的 Django list_per_page

标签 django django-admin

再会!我正在尝试找到将 list_per_page 添加为 admin 中所有模型的全局参数的解决方案。我发现,ModelAdmin 通过 ChangeList 对象有这个参数,它的默认值是 100。但是如果我想将它设置为 20 并且它对所有模型都是 true 呢?我的意思是,如果我需要在 admin 中更改当前模型的 list_per_page,我需要添加:

class CurrentModelAdmin(models.ModelAdmin):
    list_per_page = 20
    ...

有没有办法重新定义 ChangeList 对象来重写默认值?
例如在 settings.py 中作为 LIST_PER_PAGE = 20

更好的是,我如何从前端接收它并动态地使用它?

最佳答案

是的,您在设置中定义了一个变量,例如:

# settings.py

# ...
LIST_PER_PAGE = 20

更改个人 ModelAdmin类(class)

然后在你的观点中你可以写:
from django.conf import settings

class CurrentModelAdmin(models.ModelAdmin):
    list_per_page = settings.LIST_PER_PAGE

使用 list_per_page 定义基类属性集

为每个 ModelAdmin 写这个可能很麻烦 View ,因此您可以例如首先创建一个设置 list_per_page 的子类。 ,然后从该模型子类化:
from django.conf import settings

class BaseModelAdmin(models.ModelAdmin):
    list_per_page = settings.LIST_PER_PAGE

class CurrentModelAdmin(BaseModelAdmin):
    # ...
    pass

所以现在我们不再需要指定 list_per_page每个 ModelAdmin 中的属性,只要我们从 BaseModelAdmin 子类化.

猴子补丁ModelAdmin类(class)

您还可以“猴子补丁”list_per_page属性,因此只更新 ModelAdmin 处的值等级:
# app/monkey_patching.py

from django.conf import settings

ModelAdmin.list_per_page = settings.LIST_PER_PAGE

并关注 steps to "activate" the monkey patching in Django .

关于管理中所有模型的 Django list_per_page,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52931020/

相关文章:

json - 在 postgres、Django 中保存大型 json 对象

python - 从内存中的zipFile中提取zipFile

python - django查询两个表

django admin 如何防止暴力攻击?

django - 如何在 Django admin change_list 中为一列提供 CSS 类

Django 管理员 |对象列表中的组数据

Django SelectDateWidget 仅显示月份和年份

key 存在时出现 Django Session KeyError

Django - 是否建议用户使用代理模型?

具有程序逻辑或多个使用内联的 Django 内联表单集?