2017-05-30 251 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庫。