Если вы пытаетесь добавить классы к входам только для того, чтобы вы могли использовать JavaScript для их отключения при нажатии, это не обязательно. Вы должны легко выбирать кнопки, не добавляя к ним классы. Например, используя jQuery, включенный в админку Django:
django.jQuery(".submit-row :submit").attr("disabled", "disabled")
Если вам действительно необходимо переопределить рендеринг кнопки HTML, вам следует обратить внимание на переопределение блоков submit_buttons_bottom
и submit_buttons_top
:
{% extends "admin/change_form.html" %}
{% if save_on_top %}your submit buttons here{% booking_submit_row %}{% endblock %}{% endif %}
{% block submit_buttons_bottom %}your submit buttons here{% endblock %}
Если вы хотите избежать повторения этого подхода, рассмотрите возможность использования пользовательского submit-line.html
и создания собственного тега шаблона для вывода кнопок отправки в приведенном выше шаблоне, например так:
from django.contrib.admin.templatetags.admin_modify import submit_row
from django.template import Library
register = Library()
@register.inclusion_tag("admin/<your app>/<your model>/submit_line.html", takes_context=True)
def custom_submit_row(context):
ctx = submit_row(context)
original = context["original"] if "original" in context else None
# adjust as you need based on your context
return ctx
Теперь в вашем пользовательском change_form.html
вы можете использовать:
{% extends "admin/change_form.html" %}
{% load custom_admin_modify %}
{% if save_on_top %}{% custom_submit_row %}{% booking_submit_row %}{% endblock %}{% endif %}
{% block submit_buttons_bottom %}{% custom_submit_row %}{% endblock %}
Надеюсь, это поможет - удачи!