13

Django changelist 表真的很酷——可搜索、可过滤、多选操作等。

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

有没有人在 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)

我想知道是否有人有这方面的经验或可以提出替代方案。

4

1 回答 1

9

ChangeList 作为一个类真的很酷而且功能齐全。但是,很难在 AdminSite 整体环境之外使用。

ChangeList 类需要 12 个必需__init__()参数。仅这个数字就应该使您远离并且加倍,因此当您意识到这些都来自 Admin 时changelist_view()。虽然这些参数自 Django 1.1 以来一直保持不变,但它们确实从 1.0 发生了变化,而且它是一个 Django 内部对象,我不会依赖它的接口是稳定的。

使用 ChangeList 的最佳方式——或者特别是为了获得changelist 的好处(这是你所追求的)——是使用该changelist_view()方法。使用它当然需要使用/继承 AdminSite。这是值得做的,或者至少值得尝试。看起来你已经是了。

该方法接受request参数并喜欢/(?P<app_label>%s)/(?P<model_name>%s)/指向它的 URL 路由。

深入研究代码:

  • ChangeList住在django.contrib.admin.views.main
  • changelist_view()是一种方法django.contrib.admin.options.ModelAdmin

更新:在 Django 1.4 中,两者都通过分别添加一个ChangeListchangelist_view()两个新参数进行了更改。

于 2011-11-08T02:54:29.423 回答