Django中管理页面中的分层数据

A.V*_*ila 9 django django-mptt feincms

在Django项目中,我有一个使用MPTT的层次模型,在models.py中定义如下:

class Structure(MPTTModel):
    name = models.CharField(max_length=200, unique=True)
    parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
    [...]
Run Code Online (Sandbox Code Playgroud)

我正在使用FeinCMS在管理页面中显示此分层数据.我在admin.py中这样做:

class StructureAdmin(tree_editor.TreeEditor):
    search_fields = ('name',)

[...]

admin.site.register(Structure, StructureAdmin)
Run Code Online (Sandbox Code Playgroud)

在管理模型页面中,它完美地工作,可以看到层次结构: 在此输入图像描述

它在编辑或添加时也有效:

在此输入图像描述

我在models.py中有另一个模型:

class Track(models.Model):
    initialStructure = models.ForeignKey(Structure , related_name='track_initialStructure')
    finalStructure = models.ForeignKey(Structure, related_name='track_finalStructure')
    [...]
Run Code Online (Sandbox Code Playgroud)

但是,在添加此类新元素时,无法看到层次结构:

在此输入图像描述

我曾尝试使用tree_editor.TreeEditor作为Track的管理视图,但它会产生很多错误,因为Track不是分层的,但是它的一些ForeignKey是.在编辑模型轨道的元素时,如何显示层次结构?

非常感谢你.

maq*_*maq 5

尝试改变:

finalStructure = models.ForeignKey(Structure, related_name='track_finalStructure')
Run Code Online (Sandbox Code Playgroud)

至:

finalStructure = TreeForeignKey(Structure, related_name='track_finalStructure')
Run Code Online (Sandbox Code Playgroud)

当然,TreeForeignKeydjango-mptt导入后:

from mptt.fields import TreeForeignKey
Run Code Online (Sandbox Code Playgroud)