【问题标题】:Modelling a polymorphic tree with django-treebeard使用 django-treebeard 建模多态树
【发布时间】:2016-12-19 16:09:32
【问题描述】:

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

【问题讨论】:

    标签: django django-treebeard


    【解决方案1】:

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

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

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

    猜你喜欢
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-16
    • 2018-12-04
    • 2016-01-16
    • 2016-08-02
    • 2016-01-19
    相关资源
    最近更新 更多