Quiero modificar la interfaz de administración de Django.
Hay un botón de eliminar que ya tiene una página de confirmación. Pero quiero agregar esta confirmación para guardar o cambiar botones. En realidad no es exactamente el mismo botón de borrar.
Quiero cambiar los botones de administración predeterminados como este JS o quiero agregar JS a los botones de administración.
<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>Encontramos la solución en los archivos del comando delete. Tomamos copias de los archivos para confirmar la función de eliminación y las conectamos al botón de confirmación.
Aún no podemos darlo como alerta. Da confirmación en otra página.
Suponiendo que ya existe algún tipo de detector de eventos para el botón, agregaría mi propia función personalizada como detector adicional para el evento de clic. Luego, pondría mi lógica if (confirm) y llamaría a event.stopImmediatePropagation() según sea necesario para evitar que ocurra la funcionalidad original.
{% 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 %}DIRS en myproject/settings.py para que apunte al directorio de templates de su proyecto: TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR / 'templates'], 'APP_DIRS': True, ... } ]Referencias: