再会!我正在尝试找到将 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/