显示组的分层层次结构

时间:2017-05-30 19:01:28

标签: python recursion django-models

我试图展示组织的层次结构,例如一家公司。

我使用的是两种型号:

  1. django给出的auth.group
  2. 我自己的" group_relation"看起来像这样的模型
  3. 代码:

    class GroupRelation(models.Model):
    parent_group = models.ForeignKey(Group,
                                     related_name="parent_group")
    child_group = models.ForeignKey(Group,
                                    related_name="child_group")
    
    def __unicode__(self):
        return '{0} - {1}'.format(self.parent_group.name, self.child_group.name)
    

    所以我想要做的是一个函数,它返回一个包含嵌套列表的列表等等。

    实施例: XY公司有8个小组,分层如下

     1    2
    3 4  5 6
    7    8
    

    这意味着第1组和第2组是" head-groups"。 3和4是组1的一部分.7是组3的一部分.5和6是组2的一部分.8是组5的一部分。

    现在我想要归还的是这样的:

    [{'id': 1, 'grps': [{'id': 3, 'grps': [{'id': 7, 'grps':[]} ]}, {'id': 4, 'grps': []} ]},
    {'id': 2, 'grps': [{'id': 5, 'grps': [{'id': 8, 'grps': []}] }, {'id': 6, 'grps': []} ]} ]
    

    提前致谢。

1 个答案:

答案 0 :(得分:0)

实际上我自己设法找到了解决方案。最好的方法是使用mptt-library for django django-mptt