К сожалению, список включаемых файлов JavaScript создается и присваивается контекстной переменной media
, предоставляемой из функции просмотра приложения администратора, которую вы не можете легко переопределить.Но вот одно не очень элегантное решение:
Просмотрите исходный код на странице добавления администратора для вашей текущей модели и скопируйте теги сценария, которые импортируют файлы JavaScript, начиная со строки 14 (я использую Django 1.2).Вы увидите, куда их вставить, во фрагменте кода ниже.
Создайте свой собственный шаблон change_form.html
в каталоге templates/admin/my_app/article
и поместите в него следующее содержимое:
{% extends "admin/change_form.html" %}
{% block extrahead %}
{% url admin:jsi18n as jsi18nurl %}
<script type="text/javascript" src="{{ jsi18nurl|default:"../../../jsi18n/" }}"></script>
{% if add %}
{{ media }}
{% else %}
<!-- originally generated script tags: may differ depending on your model's fields -->
<script type="text/javascript" src="/media/admin/js/core.js"></script>
<script type="text/javascript" src="/media/admin/js/admin/RelatedObjectLookups.js"></script>
<script type="text/javascript" src="/media/admin/js/jquery.min.js"></script>
<script type="text/javascript" src="/media/admin/js/jquery.init.js"></script>
<script type="text/javascript" src="/media/admin/js/actions.min.js"></script>
<!-- end originally generated script tags -->
{% endif %}
{% endblock %}
Обратите внимание, что если вы добавите поле даты, например, в вашу модель, поле не будет правильно работать в форме изменений при редактировании записи, потому что необходимый файл calendar.js
не будет вызываться.Вам придется добавить его вручную, если вы сделаете такое изменение.
Одна из альтернатив, чтобы пойти дальше с этим и восстановить утраченную динамичность, состоит в создании фильтра шаблона, в который можно передать переменную media
ви используйте регулярное выражение, например, чтобы удалить нежелательный тег сценария.