Django Admin模板覆盖

时间:2018-06-05 11:20:36

标签: python django templates

我正在关注django网站上的tutorial创建我的第一个django应用程序。

现在我试图覆盖Django Admin模板。

我的项目目录是:

enter image description here

首先,我尝试在调查应用中创建新的管理模板。它有效。

然后,我尝试使用覆盖功能。为此,我在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正确覆盖相关的解决方案

有人知道为什么这不能按预期工作吗?

1 个答案:

答案 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个对象来添加高级行为。

希望这有帮助。