Django Пользовательский шаблон администратора

Я изменил шаблон индекса администратора сайта в Django следующим образом:

admin.site.index_template = "admin/list-aprovals.html"

Но как я могу отправить свою модель на эту страницу или добавить пользовательское представление для этого url:

path('admin/', admin.site.urls),

Итак, я хочу работать с существующей админкой django, но я хочу только изменить шаблон и видеть свои модели в этом специальном шаблоне, но с оригинальным приложением админки. Возможно ли это в Django? Как мне решить эту проблему?

Я пробовал использовать пользовательское приложение, но я хочу использовать оригинальную админку contrib.

Первый: Убедитесь, что администратор указан в списке INSTALLED_APPS.

Второе: Зарегистрируйте свою модель в админке в файле admin.py с помощью

# admin.py
from django.contrib import admin
from .models import MyModel
admin.site.register(MyModel)

Этого должно быть достаточно. Если вы планируете больше возиться с админкой сайта, я рекомендую следующее ( подробнее здесь). В принципе, это то же самое, что и выше, но позволяет в дальнейшем больше настраивать:

# admin.py
from django.contrib import admin
from .models import MyModel

class MyModelAdmin(admin.ModelAdmin):
    pass
admin.site.register(MyModel, MyModelAdmin)

Третье: По умолчанию каждый суперпользователь (User.is_superuser == True) обладает всеми правами! Это означает, что суперпользователь может получить доступ к сайту администратора и увидеть все ваши зарегистрированные модели (скорее всего, включая пользователей и группы).

По умолчанию каждый штатный пользователь (User.is_staff == True) НЕ имеет всех прав! Он не имеет никаких прав, но может получить доступ к сайту администратора. Вы хотите дать этому пользователю только права на чтение, запись, удаление и изменение MyModel. Это можно сделать с помощью суперпользователя и панели администратора или с помощью кода при создании пользователя.

Четвертое: Убедитесь, что ваш пользовательский шаблон (list-aprovals.html) расширяет base_site.

<!-- list-aprovals.html -->
   {% extends "admin/base_site.html" %}

   {% block content %}
   <!-- Your custom content here -->
   {% endblock %}

Это придаст вашему сайту вид сайта администратора. Очевидно, что теперь логика не обрабатывается, какие модели отображаются, а какие нет. Это, вероятно, довольно тяжелая логика для перестройки, поэтому я бы вообще пересмотрел написание такого пользовательского шаблона. Если вам нужно переделать его, я бы скопировал стандартный index_template и работал бы оттуда

Вернуться на верх