1

Djangoプロジェクト内に2つの別々の管理サイトが必要です。

1つ目はデフォルトの管理者で2つ目は「coursemanager」です次のコードはAdminSiteの助けを借りて追加しました

ファイルパス"cms/ courses / admin.py"

from courses.models import *
from django.contrib import admin
from django.contrib.admin.sites import AdminSite
from django.contrib.auth.models import User, Group
from django.contrib.auth.admin import UserAdmin, GroupAdmin 

class CourseManager(AdminSite):
    name = 'CourseManager'

course_manager = CourseManager()

class CityAdmin(admin.ModelAdmin):
    list_display = ['__unicode__', 'status',]
    list_filter = ['status',]
    search_fields = ['title',]

 course_manager.register(City, CityAdmin)

"cms / cms / urls.py"

from courses.admin import course_manager
urlpatterns = patterns('',    
    url(r'^admin/', include(admin.site.urls)),
    url(r'coursemanager/', include(course_manager.urls)),
) 

しかし、このhttp://domain.local/coursemanager/http: //domain.local/admin/を追加すると、両方のパネルが機能しますが、http://domain.local/coursemanger/リストで都市モジュールを登録しますが、リンクを追加または変更します。イベントURLからリンクにアクセスしようとしましたが、機能しませんでした。私はこれをスーパーユーザーとしてチェックしており、すべてのモジュールにアクセスできます。しかし、次のようにコードを変更すると

"cms / cms / urls.py"

from courses.admin import course_manager
urlpatterns = patterns('',    
    url(r'coursemanager/', include(course_manager.urls)),
    url(r'^admin/', include(admin.site.urls)),
) 

次に、 http://domain.local/coursemanager/が正しく機能し、http://domain.local/adminパネルにはすべての登録管理者のみが一覧表示され、追加/変更リンクは表示されません。

4

1 に答える 1

1

app_nameofは。AdminSite()を介して初期化されAdminSite.__init__()ます。クラスレベルの変数を指定してオーバーライドすることはできません。そのため、インスタンスの名前空間の衝突が発生し、その後、ここreverseでいくつかの障害が発生し、追加/変更リンクが表示されませんでした。試す

class CourseManager(AdminSite):
    '...'

course_manager = CourseManager(name='CourseManager')

# or
course_manager = AdminSite(name='CourseManager')
于 2012-08-04T10:32:50.597 に答える