在管理站点之外重用 Django 变更列表
Posted
技术标签:
【中文标题】在管理站点之外重用 Django 变更列表【英文标题】:Reusing Django Changelist Outside of Admin Site 【发布时间】:2011-01-19 21:44:18 【问题描述】: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)
我想知道是否有人有这方面的经验或可以提出替代方案。
【问题讨论】:
您是否设法重用变更列表或以某种方式对其进行调整? 尝试做同样的事情,很想听到最后的方法 【参考方案1】:ChangeList 作为一个类真的很酷而且功能齐全。但是,在 AdminSite 整体环境之外很难使用。
ChangeList 类需要 12 个必需的 __init__()
参数。仅凭这个数字就应该让您远离,所以当您意识到这些都来自管理员changelist_view()
时。虽然这些参数自 Django 1.1 以来一直保持不变,但它们确实从 1.0 发生了变化,而且它是一个 Django 内部对象,我不会依赖它的接口是稳定的。
使用 ChangeList 的最佳方式——或者特别是为了获得 changelist 的好处(这是你所追求的)——是使用 changelist_view()
方法。使用它当然需要使用/继承 AdminSite。 这是值得的,或者至少值得一试。看起来你已经这样做了。
该方法采用request
参数并喜欢指向它的URL 路由中的/(?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()
都通过分别添加一个和两个新参数进行了更改。
【讨论】:
以上是关于在管理站点之外重用 Django 变更列表的主要内容,如果未能解决你的问题,请参考以下文章
Django:在管理表单之外使用ForeignKeyRawIdWidget
在 BrowseFragment 之外重用 AndroidTV RowsFragment
django项目一:基于django2.2可重用登录与注册模块-admin后台