0

Django を使用して再帰的な関係を作成しようとしています。これにより、ユーザーはリソースを配置するフォルダーのような階層構造を得ることができます。

これを達成するための最良の方法は何ですか?

treebeard または mptt を使用してネストされたセットを作成できることは知っていますが、多くのフィールドを変更する必要があるため、ツリー構造 (この場合は頻繁に発生するもの) を変更することは非常に集中的な操作になる可能性があることを読みました。更新しました。

一方、自分自身への ForeignKey を使用してフォルダー モデルを作成することはできますが、外部キー値のない最上位フォルダーをどのように管理すればよいでしょうか? この値を NULL に設定すると、Django は文句を言いますか?

アドバイスをいただければ幸いです。

ありがとう。

4

1 に答える 1

2

Treebeard は、実際には 3 つの異なるツリーの実装をサポートしています。ニーズに合ったものを選択してください。

  • 隣接リスト (読み取りが遅い代わりに書き込みが高速)
  • マテリアライズド パス (おそらく、SQL でツリーを操作する最速の方法)
  • 入れ子になったセット (書き込み/削除操作のメンテナンスのコストがかかる非常に効率的な読み取り)

ドキュメントはこちら: https://tabo.pe/projects/django-treebeard/docs/tip/

于 2012-01-27T13:18:57.923 に答える