プログラミング

[Django]管理サイトの編集画面でセレクトボックスのリストの追加・編集・削除ボタンを非表示にする

プログラミング
この記事は約2分で読めます。
スポンサーリンク

Djangoの管理サイト(admin)では、編集画面のセレクトボックスの隣にリストのアイテムの追加・編集・削除ボタンが表示され、アイテムの編集画面へ移動せずにデータの追加・編集・削除することができます。

赤枠部分のリンクをクリックするとアイテムの追加・編集・削除をすることができます。

ただ、場合によってはこの画面ではリストのアイテムを編集させたくないこともあると思います。

今回はこの赤枠部分のボタンを非表示にする方法を説明したいと思います。

スポンサーリンク

前提条件

  • Python:3.6.2
  • Django:3.0.2

実装方法

formfield_for_dbfield関数をオーバーライドし、下記のように実装すれば、追加・編集・削除ボタンを非表示にできます。

@admin.register(Model)
class ModelAdmin(admin.ModelAdmin):

    fieldsets = ((None, {'fields': ('field_a', 'field_b')}),)

    def formfield_for_dbfield(self, db_field, request, **kwargs):
        formfield = super().formfield_for_dbfield(db_field, request, **kwargs)

        formfield.widget.can_delete_related = False
        formfield.widget.can_change_related = False
        formfield.widget.can_add_related = False

        return formfield

Modelとクラス名(ModelAdmin)、field_afield_bは適宜書き換えてください。

動作確認

追加・編集・削除ボタンが非表示になりました。

最後に

Djangoの管理サイトはほとんど実装なしで構築することができますが、デフォルトの状態だと使い勝手があまり良くないところもあるので今回のようなカスタマイズを行い、より使いやすい管理サイトを構築できるようになりたいですね。

スポンサーリンク
スポンサーリンク
KoEをフォローする
CodeLab

コメント

タイトルとURLをコピーしました