Кнопка подтверждения на кнопке сохранения, как уже есть у кнопки удаления

Я хочу изменить интерфейс администратора Django.

У кнопки удалить уже есть страница подтверждения. Но я хочу добавить это подтверждение к кнопкам сохранить или изменить. На самом деле это не совсем та же кнопка удаления.

Я хочу изменить стандартные кнопки администратора как этот JS или я хочу добавить JS к кнопкам администратора.

<input type="submit" onclick="linkSubmit('http://www.google.com')" value="Submit">
<p id="demo"></p>

<script>
function linkSubmit(link) {
  let text = "Press a button!\nEither OK or Cancel.";
  if (confirm(text) == true) {
    window.location.href = link;
  } else {
  }
  document.getElementById("demo").innerHTML = text;
}
</script>

Предполагая, что для кнопки уже существует какой-то тип слушателя событий, я бы добавил свою собственную пользовательскую функцию в качестве дополнительного слушателя для события щелчка. Затем я бы вставил свою логику if(confirm) и вызвал event.stopImmediatePropagation() по мере необходимости, чтобы предотвратить возникновение исходной функциональности.

  1. Создайте файл templates/admin/change_form.html в вашем проекте:
{% extends "admin/change_form.html" %}

{% block admin_change_form_document_ready %}{{ block.super }}
<script id="django-admin-form-change-constants"
        data-model-name="{{ opts.model_name }}">
    let modelName = document.getElementById('django-admin-form-change-constants').dataset.modelName;
    let form = document.getElementById(modelName + '_form');
    form.addEventListener('submit', (event) => {
        let text = "Press a button!\nEither OK or Cancel.";
        if (!confirm(text)) {
            event.preventDefault();
        }
    });
</script>
{% endblock %}
  1. Установите DIRS в файле myproject/settings.py ссылку на каталог templates вашего проекта:
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],
        'APP_DIRS': True,
        ...
    }
]

Ссылки:

Мы нашли решение в файлах команды delete. Мы взяли копии файлов подтверждения функции delete и подключили их к кнопке подтверждения.

Мы по-прежнему не можем выдать это за предупреждение. Выдает подтверждение на другой странице.

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