2013-02-11 19 views
8

Trong một dự án Django, tôi có một mô hình phân cấp sử dụng MPTT định nghĩa như thế này trong models.py:Dữ liệu phân cấp trong trang quản trị trong Django

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

Tôi đang sử dụng FeinCMS để hiển thị dữ liệu phân cấp này trong trang quản trị . Tôi làm điều đó như thế này trong admin.py:

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

[...] 

admin.site.register(Structure, StructureAdmin) 

Trong trang mô hình quản trị, nó hoạt động một cách hoàn hảo và hệ thống phân cấp có thể được nhìn thấy: enter image description here

Nó cũng làm việc khi chỉnh sửa hoặc thêm:

enter image description here

tôi có một mô hình trong models.py:

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

Tuy nhiên, khi thêm một yếu tố mới của loại hình này, hệ thống phân cấp có thể không được nhìn thấy:

enter image description here

Tôi đã cố gắng sử dụng tree_editor.TreeEditor cho quan điểm quản trị của Track nhưng nó mang lại rất nhiều lỗi vì Bản nhạc không phải là phân cấp, nhưng một số khóa ngoại tuyến của nó là. Làm thế nào tôi có thể hiển thị cấu trúc phân cấp khi chỉnh sửa phần tử của mô hình Theo dõi?

Cảm ơn bạn rất nhiều.

Trả lời

5

Hãy thử thay đổi:

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

tới:

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

tất nhiên, sau khi nhập TreeForeignKey từ django-mptt:

from mptt.fields import TreeForeignKey