我正在关注django网站上的tutorial创建我的第一个django应用程序。
现在我试图覆盖Django Admin模板。
我的项目目录是:
首先,我尝试在调查应用中创建新的管理模板。它有效。
然后,我尝试使用覆盖功能。为此,我在surveys/admin.py
创建了以下代码:
from django.contrib.admin import AdminSite
from django.utils.translation import ugettext_lazy
class SurveysAdminSite(AdminSite):
site_header = ugettext_lazy('Test administration')
surveys_admin_site = SurveysAdminSite()
并添加computationalMarketing/urls.py
以下内容:
from .admin import surveys_admin_site
urlpatterns = [
path('admin/', surveys_admin_site.urls, name='admin'),
]
它没有用,所以我搜索并尝试了不同的东西。将此相同的先前代码添加到surveys/urls.py
。两者都不起作用。然后我回滚更改以将代码保存到computationalMarketing/urls.py
,但这次我将代码从surveys/admin.py
更改为computationalMarketing/admin.py
(事实上我创建了该文件,因为它不存在
它有效,现在我看到了我想要的网站标题,但我得到You don't have permission to edit anything.
我看到这与超级用户创建有关,但直到现在我才能管理我的surveys app
问题,所以我相信一些与admin.py
surveys app
正确覆盖相关的解决方案
有人知道为什么这不能按预期工作吗?
答案 0 :(得分:0)
您正在覆盖整个管理网站。您可能只想覆盖特定模板并继续使用默认管理站点。
解决问题的第一种方法是将模型添加到管理站点:
surveys/admin.py
:
from django.contrib.admin import AdminSite
from django.utils.translation import ugettext_lazy
from surveys.models import OneModel, OtherModel
class SurveysAdminSite(AdminSite):
site_header = ugettext_lazy('Test administration')
surveys_admin_site = SurveysAdminSite()
surveys_admin_site.register(OneModel)
surveys_admin_site.register(OtherModel)
也许可以使用ModelAdmin个对象来添加高级行为。
希望这有帮助。