インライン編集するモデルの削除チェックボックスを非表示にする。
同じことを考える人はいるもんだ。とりあえず解決法としては、django.forms.models.BaseInlineFormSetのサブクラスをdjango.contrib.admin.StackedInlineのformset属性に指定すればいい。
from django.contrib import admin from django.forms.models import BaseInlineFormSet #class HideDeleteCheckboxFormSet(BaseInlineFormSet): # def __init__(self, *args, **kwargs): # super(HideDeleteCheckboxFormSet, self).__init__(*args, **kwargs) # self.can_delete = False #こっちのがいいかも class HideDeleteCheckboxFormSet(BaseInlineFormSet): def __init__(self, data=None, files=None, instance=None, save_as_new=False, prefix=None): super(HideDeleteCheckboxFormSet, self).__init__(data, files, instance, save_as_new, prefix) self.can_delete = False class HogeAdmin(admin.StackedInline): model = Hoge formset = HideDeleteCheckboxFormSet
できればログインしているユーザーの権限に応じて表示/非表示を切り替えたいところだけど、今のところ方法が見つからない。