2013-02-11 15 views
8

In un progetto Django, ho un modello gerarchico utilizzando MPTT definito come questo in models.py:dati gerarchici in pagine di amministrazione di Django

class Structure(MPTTModel): 
    name = models.CharField(max_length=200, unique=True) 
    parent = TreeForeignKey('self', null=True, blank=True, related_name='children') 
    [...] 

sto usando FeinCMS per mostrare questi dati gerarchici in pagine di amministrazione . Io lo faccio come questo in admin.py:

class StructureAdmin(tree_editor.TreeEditor): 
    search_fields = ('name',) 

[...] 

admin.site.register(Structure, StructureAdmin) 

Nella pagina del modello di amministrazione, funziona perfettamente e la gerarchia può essere visto: enter image description here

Funziona anche durante la modifica o l'aggiunta di:

enter image description here

ho un altro modello models.py:

class Track(models.Model): 
    initialStructure = models.ForeignKey(Structure , related_name='track_initialStructure') 
    finalStructure = models.ForeignKey(Structure, related_name='track_finalStructure') 
    [...] 

Tuttavia, quando si aggiunge un nuovo elemento di questo genere, la gerarchia non può essere visto:

enter image description here

ho cercato di utilizzare tree_editor.TreeEditor per la vista di amministrazione della pista, ma dà un sacco di errori perché la traccia non è gerarchica, ma alcuni dei suoi ForeignKey sono. Come posso mostrare la gerarchia durante la modifica di un elemento del modello Track?

Grazie mille.

risposta

5

Provare a cambiare:

finalStructure = models.ForeignKey(Structure, related_name='track_finalStructure') 

a:

finalStructure = TreeForeignKey(Structure, related_name='track_finalStructure') 

naturalmente, dopo aver importato TreeForeignKey da django-MPTT:

from mptt.fields import TreeForeignKey 
Problemi correlati