Админ django супер (тип, obj)

Хорошо, позвольте мне объяснить это.

Я работаю над простым проектом администратора django.

В файле admin.py у меня есть следующие классы администратора:

class A_Admin(admin.ModelAdmin):
    #some stuff


class B_Admin(admin.ModelAdmin):
    #some stuff

Я хочу переопределить метод get_urls() A_Admin, чтобы при нажатии кнопки на странице изменения экземпляра 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.

Так есть ли способ получить прокси Calss A_Admin внутри B_Admin? Я просто хочу переопределить changelist_view для A и вызвать его внутри B.

Это возможно?

заранее спасибо

1 ответ

Решение

Вы должны просто создать экземпляр 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]
Другие вопросы по тегам