如何覆盖Django admin的观点?

jul*_*jul 11 django admin

我想在默认的Django管理员中添加一个上传按钮,如下所示:

在此输入图像描述

为此,我重写了admin/index.html模板以添加按钮,但是如何覆盖管理视图以便处理它?

我想要实现的是在上传文件后显示成功消息或错误消息.

Chr*_*att 20

索引视图位于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
Run Code Online (Sandbox Code Playgroud)

您可能希望在以下位置引用原始方法:https://github.com/django/django/blob/1.4.1/django/contrib/admin/sites.py

然后,您创建此类的实例,并使用此实例,而不是admin.site注册您的模型.

admin_site = MyAdminSite()
Run Code Online (Sandbox Code Playgroud)

然后,后来:

from somewhere import admin_site

class MyModelAdmin(ModelAdmin):
    ...

admin_site.register(MyModel, MyModelAdmin)
Run Code Online (Sandbox Code Playgroud)

您可以在以下网址找到更多详细信息和示例:https://docs.djangoproject.com/en/dev/ref/contrib/admin/#adminsite-objects