使用django-treebeard

时间:2016-08-12 15:24:28

标签: django django-treebeard

我似乎无法找到将各种多态类型的节点添加到同一个树的方法。基本上,我想我想要一个树,其节点是公司或地区,都继承自继承自MP_Node的HierarchyNode

class HierarchyNode(MP_Node):
    name = models.CharField(max_length=30)

class Company(HierarchyNode):
    pass

class Region(HierarchyNode):
    pass

添加公司根节点是直截了当的

c1 = Company.add_root(name='Company 1')

但我似乎无法弄清楚如何将某个地区添加为c1

的孩子
c1.add_child(name='Region 1') # adds a Company named Region 1
c1.add_child(Region(name='Region 1')) # isn't valid

有办法做到这一点吗? API不允许这样做,因为这是一个坏主意吗?有没有更合适的方法来模拟这个概念?或者,我想我可以有一个HierarchyNodes树,它与公司/地区类型有一对一的关系。

1 个答案:

答案 0 :(得分:0)

好的,看完django-treebeard的代码之后,做到这一点的方法是:

c1.add_child(instance=Region('Region 1'))

我仍然不是百分百肯定这是一个好主意,但这至少会像我希望的那样坚持树。

相关问题