2013-02-11 25 views
8

w projekcie Django, mam hierarchiczny model używając MPTT zdefiniowany jak to w models.py:Hierarchiczne dane na stronach admin w Django

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

Używam FeinCMS to pokazać hierarchicznych danych na stronach administratora . I zrobić to tak w admin.py:

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

[...] 

admin.site.register(Structure, StructureAdmin) 

Na stronie Administrator modelu, to działa doskonale i hierarchia widać: enter image description here

działa również podczas edycji lub dodawania:

enter image description here

mam inny model w models.py:

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

Jednak podczas dodawania nowego elementu tego rodzaju, hierarchia nie może być widziany:

enter image description here

Próbowałem użyć tree_editor.TreeEditor dla widoku admin torze, ale daje dużo błędów, ponieważ Track nie jest hierarchiczny, ale niektóre z jego kluczy ForeignKey są. Jak mogę wyświetlić hierarchię podczas edycji elementu modelu Track?

Dziękuję bardzo.

Odpowiedz

5

Spróbuj zmienić:

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

do:

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

oczywiście, po zaimportowaniu TreeForeignKey z Django mptt:

from mptt.fields import TreeForeignKey