【问题标题】:Reusing Django Changelist Outside of Admin Site在管理站点之外重用 Django 变更列表
【发布时间】: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)

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

【问题讨论】:

  • 您是否设法重用变更列表或以某种方式对其进行调整?
  • 尝试做同样的事情,很想听到最后的方法

标签: django django-admin changelist


【解决方案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 中,ChangeListchangelist_view() 都通过分别添加一个和两个新参数进行了更改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 1970-01-01
    • 2016-11-22
    • 2011-01-17
    • 1970-01-01
    • 2012-08-23
    相关资源
    最近更新 更多