简体   繁体   English

在保存按钮 Django-admin 附近添加自定义按钮

[英]Add custom button near Save button Django-admin

I have added a custom button in django admin, however its below the Save and Save and Close buttons, how can I make this custom button on the same line with the 2 buttons above, below is the image:我在 django admin 中添加了一个自定义按钮,但是它在保存保存和关闭按钮下方,我怎样才能使这个自定义按钮与上面的 2 个按钮在同一行,下图是:

在此处输入图像描述

Then, how I overridden the button with the templates:然后,我如何用模板覆盖按钮:

{% extends 'admin/custominlines/change_form.html' %}
{% load i18n %}
 {% block submit_buttons_bottom %}
     {{ block.super }}
       {% if request.GET.edit %}
           <div class="submit-row">
           {% for obj in transitions %}
                <input type="submit" value="{{ obj }}" name="{{ obj }}">
           {% endfor %}
            </div>
     {% endif %}
{% endblock %}

Django has a <div class="submit-row"> for each row. Django 每行都有一个<div class="submit-row"> You are adding a new row.您正在添加一个新行。 What you need to do is to put your buttons in the same div with Django.您需要做的是将您的按钮与 Django 放在同一个div中。 Here is Django's code modified to have your buttons.这是 Django 的代码修改为有你的按钮。

{% 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 and original %}
    {% 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 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_save_and_continue %}<input 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 %}
// Django code above

// Your buttons below
{% for obj in transitions %}
    <input type="submit" value="{{ obj }}" name="{{ obj }}">
{% endfor %}

</div>

Your code at the end will look like this.您最后的代码将如下所示。

{% extends 'admin/custominlines/change_form.html' %}
{% load i18n %}
{% block submit_buttons_bottom %}
   <div class="submit-row">

{% if show_save %}<input type="submit" value="{% trans 'Save' %}" class="default" name="_save">{% endif %}
{% if show_delete_link and original %}
    {% 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 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_save_and_continue %}<input 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 %}

// Django code above

// Your buttons below

{% for obj in transitions %}
    <input type="submit" value="{{ obj }}" name="{{ obj }}">
{% endfor %}

</div>     
{% endblock %}

You don't have to override change_form.html .您不必override change_form.html Instead, you can just override submit_line.html相反,您可以覆盖submit_line.html

{% extends 'admin/submit_line.html' %}
{% load i18n admin_urls %}

{% block submit-row %}
    {{ block.super }}
    {% for obj in transitions %}
        <input type="submit" value="{{ obj }}" name="{{ obj }}">
    {% endfor %}
{% endblock %}

You can add a custom button in the same line of "SAVE" button on "Add" form and "Change" form for a specifc admin .您可以在特定管理员的“添加”表单和“更改”表单的“保存”按钮的同一行中添加自定义按钮。

To do that, by creating "templates/admin/custom_change_form.html" and "templates/admin/submit_line.html" in the root django project directory , you need to override "change_form.html" under django library whose path is "django/contrib/admin/templates/admin/change_form.html" and "submit_line.html" under django library whose path is "django/contrib/admin/templates/admin/submit_line.html" .为此,通过在根 django 项目目录中创建“templates/admin/custom_change_form.html”“templates/admin/submit_line.html” ,您需要覆盖路径为“django/ ”的 django 库下的“change_form.html” contrib/admin/templates/admin/change_form.html""submit_line.html" 在路径为"django/contrib/admin/templates/admin/submit_line.html"的 django 库下。

Then, you need to add the code of a custom button to "submit_line.html" as shown below:然后,您需要将自定义按钮的代码添加到“submit_line.html” ,如下所示:

# "submit_line.html"

{% load i18n admin_urls %}
<div class="submit-row">
{% block submit-row %}
{% if custom_button %}<input type="submit" style="float: right;margin-left: 8px;" value="{% translate 'Custom button' %}" name="_custom_button">{% endif %}
{% if show_save %}<input type="submit" value="{% translate 'Save' %}" class="default" name="_save">{% endif %}
{% if show_delete_link and original %}
    {% 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">{% translate "Delete" %}</a></p>
{% endif %}
{% if show_save_as_new %}<input type="submit" value="{% translate 'Save as new' %}" name="_saveasnew">{% endif %}
{% if show_save_and_add_another %}<input type="submit" value="{% translate 'Save and add another' %}" name="_addanother">{% endif %}
{% if show_save_and_continue %}<input type="submit" value="{% if can_change %}{% translate 'Save and continue editing' %}{% else %}{% translate 'Save and view' %}{% endif %}" name="_continue">{% endif %}
{% if show_close %}<a href="{% url opts|admin_urlname:'changelist' %}" class="closelink">{% translate 'Close' %}</a>{% endif %}
{% endblock %}
</div>

You can find more detail in How to add a custom button right next to "SAVE" button on "Add" form and "Change" form for a specifc admin then you will archive what you want to do.您可以在如何在“添加”表单和“更改”表单的“保存”按钮旁边为特定管理员添加自定义按钮中找到更多详细信息,然后您将归档您想要执行的操作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM