我想在 django 管理员更改列表页面顶部有一个保存按钮。django 似乎没有内置此功能。save_on_top 选项仅控制更改表单页面上的行为。欢迎任何建议。
3 回答
在 Django 3(可能更早,不确定)中,在您的自定义管理表单中添加save_on_top = True
class MyAdmin(admin.ModelAdmin):
save_on_top = True
首先,您需要一种方法来扩展在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 %}
{% if %}
标签和<input>
它里面的标签来自django/contrib/admin/templates/admin/pagination.html
.
CSS 基于 CSS for#changelist .paginator
并在django/contrib/admin/static/admin/css/changelists.css
.
如果你不介意在页面顶部也有分页链接,你可以用几行模板代码来完成,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 中受益,虽然......