Django - fk_name 是什么?

Qll*_*lli 5 django mptt

我正在寻找一些关于如何让我的 Django 项目管理员同时使用 treeadmin 拖放和 mptt 模型的帮助。

开箱即用,一切正常,但是当我在 admin.py 中尝试此操作时:

class ItemInline(TreeAdmin):
    model = MenuItems

class MenuAdmin(admin.ModelAdmin):
    model = Menu
    inlines = (ItemInline, )

admin.site.register(Menu, MenuAdmin)
Run Code Online (Sandbox Code Playgroud)

我收到错误:类型对象“ItemInline”没有属性“fk_name”。

现在,这个 fk_name 到底是什么?如何将它添加到 ItemInLine 中?

这也是我的模型,以防它与任何事情有关:

class Menu(MPTTModel):
        name = models.CharField(max_length = 100)

        def __unicode__(self):
                return self.name

class MenuItems(MPTTModel):
        menu = models.ForeignKey(Menu)
        name = models.CharField(max_length=50, unique=True)
        parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
        target = models.ForeignKey(Pages,null=True, blank=True)

        class MPTTMeta:
                order_insertion_by = ['name']

        def __unicode__(self):
                return self.name
Run Code Online (Sandbox Code Playgroud)

Dan*_*man 5

您不能只是将任何随机管理类放入内联类中。它实际上必须从InlineModelAdmin类继承,但无论TreeAdmin它是什么,显然都不是。

您可以尝试使用 InlineModelAdmin 作为 mixin 来修复此问题 - 这可能有效:

class ItemInline(TreeAdmin, InlineModelAdmin):
Run Code Online (Sandbox Code Playgroud)