好吧,让我解释一下。
我正在开发一个简单的django管理项目。
在admin.py文件中,我有以下管理类:
class A_Admin(admin.ModelAdmin):
#some stuff
class B_Admin(admin.ModelAdmin):
#some stuff
我想覆盖A_Admin的get_urls()方法,如果我单击A_Admin实例更改页面上的按钮,它会将页面重定向到B_Admin更改列表页面。
(我知道有很多方法可以做我想做的事情,上面提到的并不是最好的,但这就是我想要的。所以,请跳过讨论,为什么我坚持这个解决方案。)
我想要以下内容:
def get_urls(self):
#django's code
#inside the urlpattern
urlpattern = (
#default urls from django admin
.....
url(r'^some_url$',
wrap(super(B_Admin, self).changelist_view),
name='%s_%s_delete' % info),
....)
return urlpatterns
这不起作用,因为'self'是A_Admin类对象而不是B_Admin obejct。
那么有没有办法在B_Admin中获得calss A_Admin的代理? 我只想覆盖A的changelist_view并在B中调用它。
这可能吗?
提前致谢
答案 0 :(得分:0)
您应该只是实例化B_Admin并使用其方法。
我相信以下代码应该有效:
from django.contrib import admin
from my_app.models import B_Model # The model for which B_Admin is used
def get_urls(self):
#django's code
#inside the urlpattern
urlpattern = (
#default urls from django admin
.....
url(r'^some_url$',
wrap(B_Admin(B_Model, admin.site).changelist_view),
name='%s_%s_delete' % info),
....)
return urlpatterns
更新:最有可能的是,当您调用
时,B_Admin
已经被实例化了
admin.site.register(B_Model, B_Admin)
所以不要做
B_Admin(B_Model, admin.site)
再次,您可以从AdminSite
的注册表中获取它:
admin.site._registry[B_Model]