首页 > 解决方案 > 将取消/关闭按钮添加到 Django 管理模型编辑器

问题描述

我想在 django 默认管理模型编辑器中添加一个取消按钮,以便在用户决定取消编辑/创建模型的情况下返回上一页。一种选择是扩展“admin/submit_line.html”并向其添加一个取消按钮。但是,默认的 django 'admin/submit_line.html' 模板已经包含一个 'Close' 按钮,如下面的代码片段所示。

<div class="submit-row">
  {% block submit-row %}
    {% if show_save %}<input type="submit" value="{% trans 'Save' %}" class="default" name="_save">{% endif %}
    ...
    {% if show_save_as_new %}<input type="submit" value="{% trans 'Save as new' %}" name="_saveasnew">{% endif %}
    {% if show_save_and_add_another %}
      <input type="submit" value="{% trans 'Save and add another' %}" name="_addanother">{% endif %}
    ...
    {% if show_close %}<a href="{% url opts|admin_urlname:'changelist' %}" class="closelink">{% trans 'Close' %}</a>
    {% endif %}
  {% endblock %}
</div>

如果我复制了上面的模板并将 show_close 变量覆盖为 True,则将显示关闭按钮并按预期关闭表单。但是没有办法从 models.py 或 admin.py 类中配置“show_close”可见性吗?

标签: djangodjango-templatesdjango-admin

解决方案


submit_line.html使用以下内容覆盖模板:

{% extends "admin/submit_line.html" %}

{% load i18n admin_urls %}

{% block submit-row %}
  {{ block.super }}
  {% if not show_close and adminform.model_admin.show_close_button %}
    <a href="{% url opts|admin_urlname:'changelist' %}" class="closelink">{% translate 'Close' %}</a>
  {% endif %}
{% endblock %}

然后在您的管理类中,您可以将字段show_close_button(可以选择您想要的任何内容)设置为 True/False,并且关闭按钮将显示/隐藏。

class MyAdmin(admin.ModelAdmin):
    ...
    show_close_button = True
    ...

使用adminform.model_admin.show_close_button您将进入模板中的该字段。


推荐阅读