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_a
、 field_b
は適宜書き換えてください。
動作確認
追加・編集・削除ボタンが非表示になりました。
最後に
Django
の管理サイトはほとんど実装なしで構築することができますが、デフォルトの状態だと使い勝手があまり良くないところもあるので今回のようなカスタマイズを行い、より使いやすい管理サイトを構築できるようになりたいですね。
コメント