私は自分のカスタムクラスでAdminSiteクラスをオーバーライドしようとしました。私はdjangoのドキュメンテーションからチュートリアルに従った:https://docs.djangoproject.com/en/1.10/ref/contrib/admin/#customizing-adminsiteしかし、それは動作しませんでした。具体的には、元のAdminSiteを自分のクラスで上書きしたいのですが、自分のプロジェクトに別の管理サイトを追加するだけではありません。Django(1.10)がAdminSiteをオーバーライド
私が追加しました私のアプリのurls.pyに
from django.contrib.admin import AdminSite
class MyAdminSite(AdminSite):
pass
次にクラスから継承し、私のカスタムクラスMyAdminSiteを作成しました:
from django.conf.urls import url, include
import django.contrib.admin as admin
from .admin_site import MyAdminSite
admin.site = MyAdminSite()
admin.autodiscover()
urlpatterns = [
url(r'^', admin.site.urls),
]
動作するように見えますが、管理モデルMyAdminSiteのAdminSite instedへの登録です。
は、私は私のカスタムサイトへのレジスタモデルの三つの方法を試してみました:@admin.register(Model)
class ModelAdmin(model.AdminModel):
...
モデルが元AdminSiteに登録されているこの方法です。
第二の方法:仕事と例外が発生することはありません
@admin.site.register(Model):
class ModelAdmin(model.AdminModel):
...
。 ModelAdminクラスは、メソッドの登録に渡されません。
最終方法:
class ModelAdmin(model.AdminModel):
...
admin.site.register(Model, ModelAdmin)
動作しますが、adminサイト上で私は、Djangoの管理者(ユーザーとグループ)からの唯一の私のモデルではないモデルを見ることができます。
admin.siteを永久に上書きし、すべてのモデルをMyAdminSiteに登録するにはどうすればよいですか?
どのようにあなたのカスタムの管理サイトにモデルを登録していますか? – knbk
あなたがリンクしているドキュメントの中で、これがうまくいくと思いましたか? –
docsのサイトは単なる例であり、私が望むもの以外のものがあることを知っています。私は他のチュートリアルや他の方法もたくさん試しましたが、どれもうまくいきません。 – ostojan