17

以下に示すように、デフォルトの Django 管理者にアップロード ボタンを追加します。

ここに画像の説明を入力

そのために、admin/index.html テンプレートをオーバーライドしてボタンを追加しましたが、管理ビューをオーバーライドして処理するにはどうすればよいでしょうか?

私が達成したいのは、ファイルがアップロードされたら、成功メッセージまたはエラー メッセージを表示することです。

4

1 に答える 1

24

インデックス ビューは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 にあります。

于 2012-09-07T16:28:59.907 に答える