NON*_*AMA 4 django django-admin
再会!我正在尝试找到将 list_per_page 添加为 admin 中所有模型的全局参数的解决方案。我发现,ModelAdmin 通过 ChangeList 对象有这个参数,它的默认值是 100。但是如果我想把它设置为 20 并且它对所有模型都是 true 呢?我的意思是,如果我需要在 admin 中更改当前模型的 list_per_page,我需要添加:
class CurrentModelAdmin(models.ModelAdmin):
list_per_page = 20
...
Run Code Online (Sandbox Code Playgroud)
有没有办法重新定义 ChangeList 对象来重写默认值?例如在 settings.py 中作为 LIST_PER_PAGE = 20
更好的是,我如何从前端接收它并动态地使用它?
是的,您在设置中定义了一个变量,例如:
# settings.py
# ...
LIST_PER_PAGE = 20
Run Code Online (Sandbox Code Playgroud)
ModelAdmin课程然后在你的观点中你可以写:
from django.conf import settings
class CurrentModelAdmin(models.ModelAdmin):
list_per_page = settings.LIST_PER_PAGE
Run Code Online (Sandbox Code Playgroud)
list_per_page属性集的基类为每个 ModelAdmin视图编写它可能很麻烦,因此您可以例如首先创建一个设置 的子类,list_per_page然后从该模型创建子类:
from django.conf import settings
class BaseModelAdmin(models.ModelAdmin):
list_per_page = settings.LIST_PER_PAGE
class CurrentModelAdmin(BaseModelAdmin):
# ...
passRun Code Online (Sandbox Code Playgroud)
所以,现在我们要做不再需要指定list_per_page的每个属性ModelAdmin,只要我们继承从BaseModelAdmin。
ModelAdmin类您还可以“猴子补丁”list_per_page属性,从而只更新ModelAdmin级别的值:
# app/monkey_patching.py
from django.conf import settings
ModelAdmin.list_per_page = settings.LIST_PER_PAGERun Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1692 次 |
| 最近记录: |