Подтвердить что ты не робот

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

Я ищу способы добавления пользовательских действий на страницу изменения admin в Django. Я не ищет действия, которые можно добавить в раскрывающийся список в обзоре.

Одна модель в моем приложении Django содержит информацию о документах, и они автоматически скомпилируются в файлы PDF на интерфейсе. Я хотел бы дать администратору возможность быстро визуализировать PDF непосредственно со страницы изменения, чтобы иметь возможность быстро проверять результаты.

Я уже играл с переопределением change_form.html/submit_line.html, и абсолютно не проблема добавить кнопку. Но мне интересно, как расширить модуль администрирования чистым способом, чтобы он включал мое пользовательское действие.

4b9b3361

Ответ 1

Так как пользовательские представления администратора в основном просто нормальные, не так много специальностей. Несколько вещей, которые вы должны учитывать для более чистой интеграции:

  • Добавьте шаблон url через get_urls() AdminSite.
  • Предоставьте аргумент current_app RequestContext или Context при рендеринге шаблона, который подклассифицирует шаблоны администратора.

ИЗМЕНИТЬ

Найден пример здесь: http://shrenikp.webs.com/apps/blog/show/5211522-add-custom-view-method-for-django-admin-model-

Обратите внимание, что в примере не используется аргумент current_app, о котором я упомянул. Я полагаю, что ваше представление о создании PDF файла просто возвращает HttpResponse с соответствующим типом контента, а не с ответом с помощью Context, поэтому он не нужен. В целом current_app имеет смысл только при подклассе шаблона администратора, используемого вашим пользовательским представлением, которое фактически использует current_app где-то.

Пример инкапсулирует URL-адреса и представления в ModelAdmin. Это также возможно сделать с помощью подкласса AdminSite, но по крайней мере в вашем случае использования это, вероятно, слишком велико.

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