Как переопределить страницу добавления в админ панеле Django?

Мне нужно добавить на страницу js скрипт, который будет рисовать и удалять HTML-элемент. Нужно, чтобы когда я выбирал элемент в выпадающем списке, рисовался другой выпадающий список или наоборот исчезал.Я знаю, как переопределять страницы в Django, но не могу найти нужную, которая отвечает за добавление новых объектов. Помогите найти её.

Если вы используете Django Debug Toolbar, то вы можете просто перейти на нужную страницу админ-панели и во вкладке шаблоны посмотреть откуда загружается страница.

После того как вы нашли где находится эта страница (наиболее вероятно, что путь следующий venv/Lib/site-packages/django/contrib/admin/templates/admin/base_site.html) :

По сути, вы можете внести изменения прямо в этот файл и это будет работать.

Но обычно для более качественной архитектуры приложения все файлы сформированные Django для админ-панели оставляют нетронутыми и делают следующим образом:

  1. В корне проекта создаем папку templates.
  2. В этой папке templates создаем подкаталог admin
  3. В файле settings.py в переменной TEMPLATES в поле DIRS прописываем путь к нашему шаблону: 'DIRS': [os.path.join(BASE_DIR, 'templates')]

Теперь, если в этом подкаталоге разместить файл base_site.html, то он уже будет переопределять файл, который использует Django по дефолту.

Также дополнительная полезная информация:

Файл base_site.html расширяет файл base.html ({% extends "admin/base.html" %}), это значит, что в нем вы можете переопределить некоторые стили, которые используются в base.html прямо внутри файла base_site.html, например подгрузить ваш css файл со стилями.

В интернете можно найти много различных ресурсов, которые предоставляют измененный вид админки, который как раз получается за счет переопределения файла стилей CSS.

Выглядит это так:

{% load static %}
{% block extrastyle %}
<link rel="stylesheet" href="{% static 'css/admin.css' %}">
{% endblock %}

Этот файл уже помещается в каталоге static вашего приложения, а не проекта.

Подробно со всеми нюансами это написано в документации, если остались вопросы, то советую ознакомиться.

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