【问题标题】:How to add top save button on django admin change list?如何在 django 管理员更改列表上添加顶部保存按钮?
【发布时间】:2013-01-07 04:58:10
【问题描述】:

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

【问题讨论】:

  • 你能告诉我们你的代码吗?
  • 在更改列表页面上可以保存什么?

标签: django django-admin


【解决方案1】:

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

class MyAdmin(admin.ModelAdmin):
    save_on_top = True

【讨论】:

  • 来自问题“save_on_top 选项仅控制更改表单页面上的行为。”
【解决方案2】:

首先,您需要一种方法来扩展位于django/contrib/admin/templates/admin/change_list.html 的模板。如果您还不知道如何操作,请查看 this answerthis answer

接下来,您需要创建自己的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 %}

{% if %}标签和里面的&lt;input&gt;标签来自django/contrib/admin/templates/admin/pagination.html

CSS 基于 #changelist .paginator 的 CSS,可在 django/contrib/admin/static/admin/css/changelists.css 中找到。

【讨论】:

  • 这个答案很好用,但不是内联 CSS 或外部 CSS 文件,另一种方法是给“div”标签一个分页类,
【解决方案3】:

如果你不介意在页面顶部也有分页链接,你可以用几行模板代码来实现,Django 2.0 中的worksforme。

创建my_app/templates/admin/my_app/my_model/change_list.html:

{% extends "admin/change_list.html" %}
{% load admin_list %}

{% block result_list %}
    {% pagination cl %}
    {{ block.super }}
{% endblock %}

这将呈现分页保存按钮:

虽然可以从一两行 CSS 中受益...

【讨论】:

    猜你喜欢
    • 2013-07-28
    • 2019-04-04
    • 1970-01-01
    • 2012-10-17
    • 2019-12-20
    • 1970-01-01
    • 2018-07-19
    • 2015-03-27
    • 1970-01-01
    相关资源
    最近更新 更多