Python Django:不允许在GenericsTackedLine上删除

Python Django:不允许在GenericsTackedLine上删除,python,django,django-admin,generics,formset,Python,Django,Django Admin,Generics,Formset,我构建了一个包含通用外键的模型: class MyModel(models.Model): content_type = models.ForeignKey(ContentType, verbose_name=_('content type')) object_id = models.PositiveIntegerField(_('object id')) content_object = generic.GenericForeignKey('content_type',

我构建了一个包含通用外键的模型:

class MyModel(models.Model):
    content_type = models.ForeignKey(ContentType, verbose_name=_('content type'))
    object_id = models.PositiveIntegerField(_('object id'))
    content_object = generic.GenericForeignKey('content_type', 'object_id')
接下来,我制作了一个通用的堆叠内联,将其放入任何ModelAmin类中:

class MyModelStackedInline(generic.GenericStackedInline):
    model = MyModel
    formset = generic.generic_inlineformset_factory(MyModel, can_delete=False)
    extra = 0

class SomeOhterModelAdmin(admin.ModelAdmin):
    inlines = [MyModelStackedInline]
然而,尽管在generic\u inlineformset\u工厂中传递了can\ucode>delete=Falsearg,但我总是在我的管理更改表单中看到一个
delete
复选框

以下是一个例子:

您知道如何删除此复选框吗


谢谢:)

2016年更新:根据Stan下面的回答,django的现代版本允许您设置子类,因为它继承自


我以前遇到过这种情况——出于某种原因,将can_delete作为参数传递是不起作用的,但在formset的init方法中设置它会起作用。试试这个:

class MyInlineFormset(generic.generic_inlineformset_factory(MyModel)):
    def __init__(self, *args, **kwargs):
        super(MyInlineFormset, self).__init__(*args, **kwargs)
        self.can_delete = False
然后在您的管理内联类中:

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

也许这是一个'09年后的功能,但您可以在不重写
\uuuu init\uuuu()
方法的情况下指定:

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

很抱歉这么晚才回答。它正在工作。我可能会在django网站上开一张新票。谢谢“can_delete=False”正是我想要的。这是最好的答案