Используйте измененный шаблон администратора только для одного графического приложения. - PullRequest
1 голос
/ 28 мая 2020

Django 3.0.6

Для одной модели мне нужен измененный шаблон сайта администратора.

А именно, я хочу изменить этот шаблон:

admin/includes/fieldset.html

Я скопировал набор полей. html из django каталога пакетов и разместил его следующим образом:

/my_project/image/templates/admin/includes/fieldset.html

Вот изображение - мое приложение. Именно этому приложению нужен измененный шаблон администратора.

Проблема в том, что все остальные модели также получают этот шаблон. А используемые фильтры шаблонов не получают необходимые параметры и взрываются.

Документация: https://docs.djangoproject.com/en/3.0/ref/contrib/admin/#set -up-your-projects-admin-template-каталогов

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

Не могли бы вы мне помочь, как использовать измененный шаблон только для одного графического приложения.

1 Ответ

0 голосов
/ 28 мая 2020

У вас есть пара проблем. Во-первых, только следующие шаблоны могут быть переопределены для каждого приложения или модели :

  • actions.html
  • app_index.html
  • change_form.html
  • change_form_object_tools.html
  • change_list.html
  • change_list_object_tools.html
  • change_list_results.html
  • date_hierarchy.html
  • delete_confirmation.html
  • object_history.html
  • pagination.html
  • popup_response.html
  • prepopulated_fields_js.html
  • search_form.html
  • submit_line.html

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

Кроме того, ваше местоположение (немного изменено, поскольку не может переопределить включенные шаблоны для каждого приложения): /my_project/image/templates/admin/template.html не совсем верно. Это перезапишет этот шаблон для каждого приложения. Чтобы сделать это для каждого приложения, вам понадобится дополнительный подкаталог под администратором:

/my_project/image/templates/admin/image/template.html

Причина в том, что шаблоны не заботятся о том, в каком приложении они находятся, поэтому тот факт, что шаблон живет в вашем приложении image, ничего не значит для Django, соглашение о помещении их в подкаталог вашего приложения предназначено исключительно для того, чтобы избежать переопределения шаблонов, которые вы не собираетесь делать.

...