如何在 django 管理员更改列表上添加顶部保存按钮?

Pet*_*ers 5 django django-admin

我想在 django 管理更改列表页面顶部有一个保存按钮。似乎 django 没有内置此功能。save_on_top 选项仅控制更改表单页面上的行为。欢迎任何建议。

Kur*_*urt 6

在 Django 3(也许更早,不确定)中,在您的自定义管理表单中添加 save_on_top = True

class MyAdmin(admin.ModelAdmin):
    save_on_top = True
Run Code Online (Sandbox Code Playgroud)

  • 来自问题“save_on_top 选项仅控制更改表单页面上的行为。” (3认同)

Ada*_*lor 5

首先,您需要一种方法来扩展在django/contrib/admin/templates/admin/change_list.html. 如果您还不知道该怎么做,请查看此答案此答案

接下来,您需要创建自己的change_list.html模板并将类似于以下的代码放入其中。为简单起见,我包含了内联 CSS。然而,这是不好的做法,所以你不应该这样做。假设您将 CSS 移动到外部文件,则不需要加载admin_static. 最后,extends您使用的行可能与我在此处显示的不完全相同。

{% extends "contrib/admin/templates/admin/change_list.html" %}
{% load i18n admin_static %}

{% block result_list %}
    {% if cl.formset and cl.result_count %}
        <div style="border-bottom: 1px solid #ccc; background: white url({% static "admin/img/nav-bg.gif" %}) 0 180% repeat-x; overflow: hidden;">
            <p>
                <input type="submit" name="_save" class="default" value="{% trans 'Save' %}"/>
            </p>
        </div>
    {% endif %}

    {{ block.super }}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

{% if %}标签和<input>它的标签内是从django/contrib/admin/templates/admin/pagination.html

CSS 基于 CSS for#changelist .paginator并在django/contrib/admin/static/admin/css/changelists.css.