Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用django树beard建模多态树_Django_Django Treebeard - Fatal编程技术网

用django树beard建模多态树

用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 添加公司根节点很简

我似乎找不到将各种多态类型的节点添加到同一棵树的方法。基本上,我想我想要一棵树,它的节点要么是公司要么是地区,两者都继承自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不允许这样做是因为这是一个坏主意吗?有没有更合适的方法来模拟这个概念?或者,我想我可以有一个层次节点树,它与公司/地区类型有一对一的关系。

好的,在查看django treebeard的代码后,方法是:

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

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

好的,在查看django treebeard的代码后,实现这一点的方法是:

c1.add_child(instance=Region('Region 1'))
我仍然不能100%肯定这是一个好主意,但这至少让这棵树保持了我所希望的状态。

参见