1

我似乎找不到将各种多态类型的节点添加到同一棵树的方法。基本上,我想我想要一棵树,其节点要么是 Company 要么是 Region,两者都继承自 HierarchyNode,而 HierarchyNode 继承自 MP_Node

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 树,它与 Company/Region 类型具有一对一的关系。

4

1 回答 1

0

好的,在查看了 django-treebeard 的代码之后,这样做的方法是:

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

我仍然不能 100% 确定这是一个好主意,但这至少确实像我希望的那样使树保持不变。

于 2016-08-12T16:04:19.057 回答