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