インライン編集するモデルの削除チェックボックスを非表示にする。

http://groups.google.com/group/django-users/browse_thread/thread/631fbc97b54f023e/16b6a85f1a4b5c94?lnk=raot&pli=1

同じことを考える人はいるもんだ。とりあえず解決法としては、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

できればログインしているユーザーの権限に応じて表示/非表示を切り替えたいところだけど、今のところ方法が見つからない。