在管理网站外重用Django变更列表

13

Django的changelist表格非常酷炫-可搜索,可过滤,具有多选操作等。

我正在为一个应用程序构建自定义后端,并不断意识到:这正是我所需要的,我应该重用它。

有没有人在Django的管理应用程序之外使用过changelist?

目前我得出的解决方法类似于:

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)

我想知道是否有人有经验或者能够建议一个替代方法。


你是否成功地重用了Changelist或者以某种方式进行了调整? - gdvalderrama
尝试做同样的事情,很想听听最终的方法。 - dave4jr
1个回答

9
ChangeList类非常酷且功能丰富。然而,它在AdminSite单体上下文之外使用起来很难。
ChangeList类需要12个必需的__init__()参数。仅凭这个数字就应该让你远离它,特别是当你意识到这些参数都来自于Admin changelist_view()时更应如此。尽管这些参数从Django 1.1开始保持不变,但它们与1.0版本有所不同,并且它是如此依赖Django内部对象,我不会指望它的接口是稳定的。
使用ChangeList的最佳方法是使用changelist_view()方法,或者更具体地说,获取changelist的好处(这就是您想要的)。当然,使用该方法需要使用/子类化AdminSite。值得做,或至少尝试一下。看起来您已经在使用了。
该方法接受request参数,并喜欢/(?P%s)/(?P%s)/URL路由指向它。
深入了解代码:
- ChangeList位于django.contrib.admin.views.main中 - changelist_view()是django.contrib.admin.options.ModelAdmin上的方法
更新:在Django 1.4中,ChangeList和changelist_view()都通过分别添加一个和两个新参数进行了更改。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接