在Django项目中,我使用了在models.py中定义的MPTT的分层模型:
class Structure(MPTTModel):
name = models.CharField(max_length=200, unique=True)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
[...]
我正在使用FeinCMS在管理页面中显示此分层数据。我在admin.py中这样做:
class StructureAdmin(tree_editor.TreeEditor):
search_fields = ('name',)
[...]
admin.site.register(Structure, StructureAdmin)
在管理模型页面中,它工作正常,可以看到层次结构:
在编辑或添加时也可以使用:
我在models.py中有另一个模型:
class Track(models.Model):
initialStructure = models.ForeignKey(Structure , related_name='track_initialStructure')
finalStructure = models.ForeignKey(Structure, related_name='track_finalStructure')
[...]
但是,在添加此类新元素时,无法看到层次结构:
我曾尝试使用tree_editor.TreeEditor作为Track的管理视图,但它会产生很多错误,因为Track不是分层的,但是它的一些ForeignKey是。如何在编辑模型Track的元素时显示层次结构?
非常感谢。
答案 0 :(得分:5)
尝试更改:
finalStructure = models.ForeignKey(Structure, related_name='track_finalStructure')
为:
finalStructure = TreeForeignKey(Structure, related_name='track_finalStructure')
当然,从 django-mptt 导入TreeForeignKey
之后:
from mptt.fields import TreeForeignKey