리프 노드가 다른 모델의 인스턴스가 될 수있는 hirerchical 어플리케이션을 개발 중입니다. 내가 장고 - mptt 응용 프로그램과 함께 작동하게하는 방법을 알아낼 수 없습니다. 이 응용 프로그램에서도 가능합니까? 그렇다면 내가 뭘 잘못하고 있니? 만약에 없다면, 거기에 무엇인가가 있습니까? 나는 무엇을하려고합니까? 나는 내가 단지 폴더 아이를 얻을 수 및 이미지 없음 나는 다음과 같은 작업을 수행 할 때여러 유형의 Django-MPTT 리프 노드
class FolderItemBase(MPTTModel):
order = models.PositiveIntegerField()
class Meta:
abstract = True
class MPTTMeta:
parent_attr = 'folder'
order_insertion_by = ['order']
class Folder(FolderItemBase):
folder = TreeForeignKey('Folder', related_name='folders', blank=True, null=True)
...
class Image(FolderItemBase):
folder = TreeForeignKey('Gallery', related_name='images') # cannot be null since leaf has to be inside of a folder
...
:
다음은 모델의 기본 구조입니다. 당신이 그것을 볼 수 있듯이
이Folder table
----------------
+----+-------+-----+------+---------+-------+-----------+----------+
| ID | order | lft | rght | tree_id | level | folder_id | title |
+----+-------+-----+------+---------+-------+-----------+----------+
| 1 | 0 | 1 | 4 | 1 | 0 | | Folder 1 |
+----+-------+-----+------+---------+-------+-----------+----------+
| 2 | 0 | 2 | 3 | 1 | 1 | 1 | Folder 2 |
+----+-------+-----+------+---------+-------+-----------+----------+
Images Table
------------
+----+-------+-----+------+---------+-------+-----------+
| ID | order | lft | rght | tree_id | level | folder_id |
+----+-------+-----+------+---------+-------+-----------+
| 1 | 1 | 2 | 3 | 1 | 1 | 1 |
+----+-------+-----+------+---------+-------+-----------+
을해야 어떤 수치 : 똑같은 나는 이미지
>>> folder1 = Folder.objects.create(title='Folder 1', order=0)
>>> folder2 = Folder(title='Folder 2', order=0)
>>> folder2.insert_at(folder1, save=True)
>>> image = Image(...)
>>> image.insert_at(folder1, save=True)
>>> folder1.get_children()
[<Folder: Folder 2>]
>>> image.get_ancestores()
[]
의 조상을 얻으려고 그리고이 일이 모든 후 DB에 저장하는 방법을 때 (적어도 적어도 보이는 것처럼 보이지만) 폴더 테이블의 내용은 업데이트되지 않으므로 쿼리를 시도 할 때 아무 것도 선택되지 않습니다.
모든 포인터가 감사하겠습니다. 고맙습니다.