2017-05-30 2 views
0

Ich versuche, die Hierarchie einer Organisation, z. eine Firma.Anzeige geschichtete Hierarchie von Gruppen

Ich bin mit 2 Modellen:

  1. Die auth.group von django gegeben
  2. My own "group_relation" Modell, das wie dieser

-Code aussieht:

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) 

Also was ich will, ist eine Funktion, die mir eine Liste mit verschachtelten Listen und so weiter zurückgibt.

Beispiel: Firma XY hat 8 Gruppen, die überlagert sind als

1 2 
3 4 5 6 
7 8 

gefolgt, die bedeutet, dass Gruppen 1 und 2 sind die „Kopfgruppen“. 3 und 4 sind Teil der Gruppe 1. 7 ist Teil der Gruppe 3. 5 und 6 sind Teil der Gruppe 2. 8 ist Teil der Gruppe 5.

Nun, was ich zurückgegeben werden möchte, ist etwas wie das :

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

Vielen Dank im Voraus.

+0

von der Spitze meines Kopfes nur recurse auf 'instance._meta.get_all_related_objects()', die die Fremdschlüssel Beziehungen bauen bekommen was Sie wollen. – Pythonista

Antwort

0

Eigentlich habe ich selbst eine Lösung gefunden. Der beste Weg war die Verwendung der Mptt-Bibliothek für Django django-mptt.