2

django-mptt をエンジニアリングコーディネーションプロジェクトに使用することを検討しているので、django-mptt について教えてください。

ツリーに Model クラス (たとえば「Interface」) があり、モデルへの ForeignKey (たとえば「Location」) があります。

インターフェイスが参照する場所の深さでインターフェイスをフィルタリングできますか? 深さは親の数です。

データを整理する方法がまだわからないので、質問しています。私は django-mptt の使用を検討しています (展開時にループによって作成されたモデルとは対照的に、各モデルはツリー レベルに対応しています) が、ある時点でブロックされ、プロジェクト全体のレビューを余儀なくされるのではないかと心配しています。

4

1 に答える 1

9

最終的に私の答えを見つけました: django-mptt dev documentation

レベル ノードがツリー内にあるレベル (または「深さ」)。

ルート ノードはレベル 0、直下の子はレベル 1、直下の子はレベル 2 などです。

このフィールドは、便宜上純粋に非正規化されています。特定のノードのレベルを決定するためにツリー構造を調べる必要がなくなり、Django の ORM を使用して、深さを考慮する必要のあるクエリを簡単に実装できるようになります。たとえば、ツリー全体またはサブツリーに対して取得されるノードのレベル数を制限します。

# Retrieve root nodes and their immediate children only
SomeModel.tree.filter(level__lte=1)
于 2012-10-23T14:26:16.390 に答える