Django - 在另一个应用程序的一个应用程序中注册Admin模型视图

问题描述 投票:0回答:2

我有点困惑,因为我打算这样做,部分是因为文档从中文翻译得有点差,部分原因是因为我只是围绕基于类的观点。

编辑:我使用xadmin(代替django管理员)而不是内置的django管理站点。

我有以下目录结构:

Project
    manage.py
    db.sqlite3
    /docs
    /static
    /templates
    /main_app
        __init__.py
        settings.py
        urls.py *
        wsgi.py
        /apps
            /xadmin
                adminx.py *
            /survey
                admin.py *

以及main_app.urls中的以下URL映射:

from django.conf.urls import url, include
from django.contrib import admin

import xadmin
xadmin.autodiscover()

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^survey/', include('survey.urls')),
    url(r'xadmin/', include(xadmin.site.urls)),
]

survey.admin有它的类,例如

class SurveyAdmin(admin.ModelAdmin):
    list_display = ('name', 'is_published', 'need_logged_user', 'template')
    list_filter = ('is_published', 'need_logged_user')
    inlines = [CategoryInline, QuestionInline]
    actions = [make_published]

admin.site.register(Survey, SurveyAdmin)

我知道我的Survey应用程序的模型工作正常,因为当我检查db.sql3时,我可以在那里看到我的虚拟条目。当我登录127.0.0.1:8000/admin时,我可以看到SurveyAdmin视图已注册并可用。

但是,当我登录127.0.0.1:8000/xadmin时,SurveyAdmin未注册。

xadmin docs我得到我必须在xadmin.adminx中注册管理员类视图。我想要注册的管理类视图已经存在于survey.admin中。我相信我需要做的就是将这些视图移动到xadmin.adminx - 我真的只想在我这样做之前检查以确保这是正确的。

django class admin
2个回答
0
投票

你不应该在urls.py中添加这个:

from xadmin.plugins import xversion
xversion.register_models()

它在quickstart docs


0
投票

搞定了。我所要做的就是将classes.admin中的类移到xadmin.adminx并稍微更改参数。

从survey.admin转移

class SurveyAdmin(admin.ModelAdmin):
    list_display = ('name', 'is_published', 'need_logged_user', 'template')
    list_filter = ('is_published', 'need_logged_user')

admin.site.register(Survey, SurveyAdmin)

到xadmin.adminx

class SurveyAdmin(object):
    list_display = ('name', 'is_published', 'need_logged_user', 'template')
    list_filter = ('is_published', 'need_logged_user')

xadmin.site.register(Survey, SurveyAdmin)

有意义,因为xadmin.adminx意味着要替换你通常的admin.py(之前调查的是.admin)

© www.soinside.com 2019 - 2024. All rights reserved.