在 Django 的 ModelAdmin 中将内联限制为编辑模式

Limit inlines to edit mode in Django's ModelAdmin

如何将 Django 的 ModelAdmin 内联限制为编辑模式。这是我尝试过的方法,但它不起作用:

class PageAdmin(admin.ModelAdmin):
    form = PageModelForm

    def __init__(self, *args, **kwargs):
        super(PageAdmin, self).__init__(*args, **kwargs)
        if self.instance.pk:
            self.inlines = (FileInLine, )

换句话说,我想访问 ModelAdmin 中的实例以确定是否设置了 pk,并且只有在这种情况下才显示内联。

试试这个

class PageAdmin(admin.ModelAdmin):
    form = PageModelForm
    inlines = [FileInLine]

    def get_formsets_with_inlines(self, request, obj=None):
        for inline in self.get_inline_instances(request, obj):
            if isinstance(inline, FileInLine) and obj is None:
                continue
            yield inline.get_formset(request, obj), inline

https://docs.djangoproject.com/en/1.7/ref/contrib/admin/#django.contrib.admin.ModelAdmin.get_formsets_with_inlines