0

DjangoのAdminSiteの拡張に関する以前の質問に関連して、AdminSiteのサブクラス化に成功し、完全に正常にログインできます。ただし、私の管理サイトにはアプリケーションモデルがありません。admin.autodiscover()関数は機能しなくなり、Pythonに精通していないため、何が間違っているのかを理解できません。

簡単に言うと、AdminSite.autodiscover()を使用できない場合、さまざまなDjangoアプリのすべてのモデルをサブクラス化されたAdminSiteインスタンスにロードするにはどうすればよいですか?

4

2 に答える 2

1

django.contrib.admin.autodiscoverサブクラス化した場合でも、を使用しない理由はありませんAdminSiteadminこれは、に登録されているすべてのDjangoアプリケーションからモジュールをインポートしsettings.INSTALLED_APPS、モデルを管理サイトインスタンスに効果的に登録する実際のインストルメンテーションです。

サブクラスのproject.admin.foo_siteインスタンスがある場合に要約するには、次のようにします。project.admin.FooAdminSite

# project/urls.py
from django.conf.urls import url
from django.contrib import admin

from project.admin import foo_site


admin.autodiscover()

urlpatterns = patterns('',
    url(r'^admin/', include(foo_site.urls)),
)

#project/app/admin.py
from project.admin import foo_site
from project.app.models import Bar


foo_site.register(Bar)
于 2012-07-25T09:19:50.590 に答える
0

admin.pyを設定し、モデルを登録する必要があります。Djangoチュートリアルの言い換えバージョンは次のとおりです。

これを行うには、アプリディレクトリにadmin.pyというファイルを作成し、次のように編集します。

from django.contrib import admin
from app.models import Model1, Model2, Model3

admin.site.register(Model1)
admin.site.register(Model2)
admin.site.register(Model3)
于 2012-07-25T08:45:25.923 に答える