在单击其中一个按钮后,我想禁用它们存在于提交行中的所有按钮(保存,保存和编辑,删除等)。
我开始尝试为管理员模型覆盖change_form。东西 像这样:
class MyAdmin(admin.ModelAdmin):
change_form_template = 'admin/reports/models/change_form.html'
添加到 admin / reports / models / change_form.html 文件中,我添加了以下代码:
{% extends "admin/change_form.html" %}
{% load i18n admin_urls %}
<div class="submit-row">
{% block submit-row %}
{% if show_save %}<input type="submit" value="{% trans 'Save' %}" class="default" name="_save">{% endif %}
{% if show_delete_link %}
{% url opts|admin_urlname:'delete' original.pk|admin_urlquote as delete_url %}
<p class="deletelink-box"><a href="{% add_preserved_filters delete_url %}" class="deletelink">{% trans "Delete" %}</a></p>
{% endif %}
{% if show_save_as_new %}<input class="myclass" type="submit" value="{% trans 'Save as new' %}" name="_saveasnew">{% endif %}
{% if show_save_and_add_another %}<input class="myclass" type="submit" value="{% trans 'Save and add another' %}" name="_addanother">{% endif %}
{% if show_save_and_continue %}<input class="myclass" type="submit" value="{% if can_change %}{% trans 'Save and continue editing' %}{% else %}{% trans 'Save and view' %}{% endif %}" name="_continue">{% endif %}
{% if show_close %}<a href="{% url opts|admin_urlname:'changelist' %}" class="closelink">{% trans 'Close' %}</a>{% endif %}
{% endblock %}
</div>
但是我看不到任何变化(没有class =“ myclass ”)。
我的下一个更改将是单击时禁用所有按钮的js代码...但是现在我被第一个问题阻止了。
我使用python 3和Django 2
答案 0 :(得分:0)
如果您只是试图将类添加到输入中,以便可以在单击时使用JavaScript禁用它们,则没有必要。您应该能够轻松地选择按钮,而无需向其添加类。例如,使用Django管理员中包含的jQuery:
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 %}
希望如此-祝您好运!