我似乎找不到将各种多态类型的节点添加到同一棵树的方法。基本上,我想我想要一棵树,其节点要么是 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 类型具有一对一的关系。