用django树beard建模多态树
我似乎找不到将各种多态类型的节点添加到同一棵树的方法。基本上,我想我想要一棵树,它的节点要么是公司要么是地区,两者都继承自HierarchyNode,后者继承自MP_Node用django树beard建模多态树,django,django-treebeard,Django,Django Treebeard,我似乎找不到将各种多态类型的节点添加到同一棵树的方法。基本上,我想我想要一棵树,它的节点要么是公司要么是地区,两者都继承自HierarchyNode,后者继承自MP_Node class HierarchyNode(MP_Node): name = models.CharField(max_length=30) class Company(HierarchyNode): pass class Region(HierarchyNode): pass 添加公司根节点很简
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不允许这样做是因为这是一个坏主意吗?有没有更合适的方法来模拟这个概念?或者,我想我可以有一个层次节点树,它与公司/地区类型有一对一的关系。好的,在查看django treebeard的代码后,方法是:
c1.add_child(instance=Region('Region 1'))
我仍然不能100%确定这是一个好主意,但这至少像我希望的那样保持了树。好的,在查看django treebeard的代码后,实现这一点的方法是:
c1.add_child(instance=Region('Region 1'))
我仍然不能100%肯定这是一个好主意,但这至少让这棵树保持了我所希望的状态。参见