読者です 読者をやめる 読者になる 読者になる

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

Django Python

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

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