Переопределение шаблона администратора Django - PullRequest
0 голосов
/ 05 июня 2018

Я следую учебнику на веб-сайте django, чтобы создать свое первое приложение django.

Теперь я застрял при попытке переопределить шаблон администратора Django.

Каталог моего проектаэто:

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 (фактически я создал файл, потому что он не существует.

Itработает, и теперь я вижу заголовок сайта, который мне нужен, но я получаю You don't have permission to edit anything. Я видел, что это связано с созданием суперпользователя, но до сих пор я мог без проблем администрировать свой surveys app, поэтому я верю в какое-то решениеправильно связано с переопределением admin.py в surveys app

Кто-нибудь знает, почему это не работает, как ожидалось?

1 Ответ

0 голосов
/ 05 июня 2018

Вы переопределяете весь сайт администратора.Вы можете переопределить только определенные шаблоны и продолжать использовать сайт администратора по умолчанию.

Первый подход к решению вашей проблемы - добавить модели на сайт администратора:

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 объекты для добавления расширенного поведения.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...