2012-10-23 56 views
2

我想知道一件關於django-mptt的事情,因爲我正在考慮將它用於工程協調項目。Django MPTT:按深度過濾?

我會有一個Model類(比如說'Interface'),在Tree中有一個外鍵給Model(比如'Location')。

我可以通過它們所指位置的深度來過濾接口嗎?深度是父母的數量。

我還不知道如何組織我的數據,這就是爲什麼我問。我正在考慮使用django-mptt(與在部署時由循環創建的模型相反,每個模型對應於樹級別),但是我害怕它會阻止我在某個時刻強迫我檢查整個項目。

回答

9

找到我的答案終於:django-mptt dev documentation

水平進行比較(或「深度」),在該節點坐在樹上。

根節點是0級,其直接孩子是1級,其 直接孩子是2級等等...

本場純粹是denormalisation爲了方便。它避免了需要檢查樹結構以確定特定節點的級別,並且使得需要深入到 帳戶的查詢更容易使用Django的ORM實現。例如,限制 其對整個樹 或任何子樹檢索的節點的電平的數目:

# Retrieve root nodes and their immediate children only 
SomeModel.tree.filter(level__lte=1)