Django更改列表表非常酷 - 可搜索,可过滤,多选操作等。
我正在构建一个应用程序的自定义后端,我一直在意识到:这正是我需要的,我应该重新使用它。
有没有人有使用Django管理应用程序之外的更改列表的经验?
我目前得到的是这样的:
from profile.admin import ProfileAdmin
from django.contrib.admin.sites import AdminSite
from profile.models import Profile
profile_admin = ProfileAdmin(Profile, AdminSite())
return profile_admin.changelist_view(request)
我想知道是否有人有这方面的经验,或者可以提出替代方案。
答案 0 :(得分:9)
ChangeList作为一个类非常酷,功能齐全。但是,它在AdminSite monolith的上下文之外难以使用。
ChangeList类需要12个必需的__init__()
参数。当你意识到这些都来自管理员changelist_view()
时,这个数字本身就应该引导你离开并加倍。虽然这些参数自Django 1.1以来保持不变,但它们确实从1.0改变而且它是一个Django内部对象,我不会依赖它的界面稳定。
使用ChangeList的最佳方式 - 或者专门用于获取更改列表的好处(这就是你所追求的) - 是使用changelist_view()
方法。使用它当然需要使用/子类化AdminSite。 这值得做,或至少尝试过。看起来你已经是。
该方法采用request
参数,并在指向它的网址路由中点赞/(?P<app_label>%s)/(?P<model_name>%s)/
。
深入研究代码:
ChangeList
住在django.contrib.admin.views.main
changelist_view()
是django.contrib.admin.options.ModelAdmin
更新:在Django 1.4中,ChangeList
和changelist_view()
分别通过添加一个和两个新参数而发生了变化。