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に基づいており、に#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 %}
これにより、ページネーションと保存ボタンがレンダリングされます。
ただし、1行か2行のCSSの恩恵を受けることができます...