Задать вопрос
syschel
@syschel
freelance/python/django/backend

Свои кнопки(функции) в админке джанги?

Есть необходимость выполнения некоторых самописных функций в пределах админки Джанги. Сейчас они реализованы через commands и вызываются из консоли. Но нужно вынести их в админку, что бы администратор сайта мог их использовать, не прибегая к помощи консоли.

К примеру "сбросить кеш" или "пересчитать дерево у категорий меню". Все они быстро выполняются, ресурсов не едят. Но вот как засунуть их именно в джангову админку, не знаю. Варианты с переопределением у модели или админ класса функции save(), с засовыванием туда вызов функции, не подходит. Ибо вызывать нужно не при каждом изменение и не всегда. Плюс не всегда работа с одним объектом.

Вариант с "сделать отдельную админку" не нужен. Знаю, умею. Но ради 2-5 мелких кнопок, при том связанных с конкретными моделями, городить велосипед не целесообразно.

Смотрю пока что в сторону AdminSite. Но может у кого-то есть пример кода или другие мысли, с встраиванием кнопки/ссылки/промежуточной страницы, где бы вызывалась сторонняя функция?
  • Вопрос задан
  • 2521 просмотр
Подписаться 3 Оценить Комментировать
Решения вопроса 1
@marazmiki
Укротитель питонов
Админка по сути — старая версия CBV. С тем лишь отличием, что задаёт не единственную вьюху, а набор. И схему урлов бонусом. И есть штатные средства добавить в каждый класс ModelAdmin приоизвольный набор собственных вьюх-действий. Даже в документации указано.

Как сделать кнопки: не знаю, как насчёт сейчас, но ещё буквально год назад для этого нужно было переопределять шаблон админки для конкретного приложения (см. про переопределение шаблонов в админке). Или более простой вариант — написать JS, который добавит на страничку HTML-код кнопок, и подключить этот JS через Media.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@devel787
Возможно, чем-то поможет djbook.ru/examples/63
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы