Django MPTT:按深度过滤?

时间:2012-10-23 14:23:00

标签: python django django-models django-mptt mptt

我想知道关于django-mptt的事情,因为我正在考虑将它用于工程协调项目。

我会有一个Model类(比如'Interface'),在Tree中有一个到Model的ForeignKey(比如'Location')。

我能否按照所涉及的位置深度过滤界面?深度是父母的数量。

我还不知道如何整理我的数据,这就是我要问的原因。我正在考虑使用django-mptt(与在部署时由循环创建的模型相对,每个模型对应一个树级别),但我害怕它会阻止我的某个点并迫使我审查我的整个项目。

1 个答案:

答案 0 :(得分:9)

最后找到我的答案:django-mptt dev documentation

  

级别节点在树中的级别(或“深度”)。

     

根节点为0级,他们的直接子级为1级   直系儿童是2级等等......

     

为方便起见,该字段纯粹是非规范化。它避免了   需要检查树结构以确定a的级别   特定节点并进行需要深入研究的查询   使用Django的ORM更容易实现帐户。例如,限制   为整个树检索的节点级别数   或任何子树:

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