2017-05-30 150 views
0

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

我使用2种型号:

  1. Django在给定的
  2. 我自己的 “group_relation” 模型auth.group它看起来像这样

代码:

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是“头基团”。 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': []} ]} ] 

在此先感谢。

+0

关闭我的头顶部只是递归'instance._meta.get_all_related_objects()'这将得到你想要的外键关系。 – Pythonista

回答

0

其实我自己设法找到了解决方案。最好的方法是使用django django-mptt的mptt库。