2017-05-30 8 views
0

組織の階層を表示しようとしています。会社。グループの階層構造を表示する

私は2つのモデルを使用しています:

  1. この

コードのように見える

  • 私自身の "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グループ1及び2は、「頭部基」であることを意味する

    1 2 
    3 4 5 6 
    7 8 
    

    を以下のように積層された8つのグループを有しています。 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-libraryを使うことでした。

    関連する問題