Django: disallow can_delete on GenericStackedInline Django: disallow can_delete on GenericStackedInline django django

Django: disallow can_delete on GenericStackedInline


Maybe It is a post '09 feature, but you can specify that without overriding the __init__() method :

class StupidCarOptionsInline(admin.StackedInline):    model = models.StupidOption    form = StupidCarOptionAdminForm    extra = 0    can_delete = False


Update 2016: as per Stan's answer below, modern versions of django let you set can_delete = True on the GenericStackedInline subclass, as it inherits from InlineModelAdmin


I've run into this before - for some reason passing can_delete as an argument doesn't work, but setting it in the formset's init method does. Try this:

class MyInlineFormset(generic.generic_inlineformset_factory(MyModel)):    def __init__(self, *args, **kwargs):        super(MyInlineFormset, self).__init__(*args, **kwargs)        self.can_delete = False

then in your admin inline class:

class MyModelStackedInline(generic.GenericStackedInline):    model = MyModel    formset = MyInlineFormset    extra = 0