Вопрос по admin, django – Как отменить взгляды администратора Django?

11

Я хочу добавить кнопку загрузки к администратору Django по умолчанию, как показано ниже:

Для этого я переопределил шаблон admin / index.html, чтобы добавить кнопку, но как я могу переопределить представление администратора для его обработки?

Чего я хочу добиться, так это отобразить сообщение об успешном завершении или сообщение об ошибке после загрузки файла.

Увидетьэтот FAQ по Django Wiki, Нет необходимости переопределять / подкласс.AdminSite xyres

Ваш Ответ

1   ответ
17

Представление индекса находится наAdminSite пример. Чтобы переопределить это, выпридется создать кастомAdminSite подкласс (то есть, не используяdjango.contrib.admin.site больше):

from django.contrib.admin import AdminSite
from django.views.decorators.cache import never_cache

class MyAdminSite(AdminSite):
    @never_cache
    def index(self, request, extra_context=None):
        # do stuff

Вы можете ссылаться на оригинальный метод по адресу:https://github.com/django/django/blob/1.4.1/django/contrib/admin/sites.py

Затем вы создаете экземпляр этого класса и используете этот экземпляр, а неadmin.site зарегистрировать свои модели.

admin_site = MyAdminSite()

Тогда позже:

from somewhere import admin_site

class MyModelAdmin(ModelAdmin):
    ...

admin_site.register(MyModel, MyModelAdmin)

Вы можете найти более подробную информацию и примеры на:https://docs.djangoproject.com/en/dev/ref/contrib/admin/#adminsite-objects

Вы рекомендуете делать это в отдельном приложении? Shawn
Это также способ добавить еще одну ссылку среди'Add' а также'Change', что можно найти по названию модели? Я'планирую добавить ссылку'View only' Наряду с этим. Спасибо Charlesliam
Спасибо. Нет другого способа добиться этого? Например, путем создания нового модуля (что-то вроде боковой панели)? jul
Сама эта боковая панель заполняется контекстом, добавленным через представление индекса. Единственный способ добавить больше контекста - переопределить представление индекса, а единственный способ сделать это - создать подкласс.AdminSite Chris Pratt

Похожие вопросы