Django - 什么是fk_name?

时间:2012-09-09 08:39:21

标签: django mptt

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

一切正常,但我在admin.py中尝试了这个:

class ItemInline(TreeAdmin):
    model = MenuItems

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

admin.site.register(Menu, MenuAdmin)

我收到错误:类型对象'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

1 个答案:

答案 0 :(得分:4)

您不能将任何随机管理类放入内联。它必须实际上从InlineModelAdmin类继承,而且TreeAdmin显然没有。

您可以尝试使用InlineModelAdmin作为mixin来解决此问题 - 可能工作:

class ItemInline(TreeAdmin, InlineModelAdmin):