2012-01-27 113 views
0

我正在嘗試使用Django創建遞歸關係,該關係爲用戶提供了一個文件夾式分層結構,用於放置資源。Django - 可選遞歸關係

什麼是最好的方法來實現這一目標?

我知道我可以使用treebeard或mptt來創建一個嵌套集,但我已經讀過,對樹結構進行更改(在這種情況下會發生很多事情)可能是相當密集的操作,因爲很多字段必須更新。

另一方面,我可以使用ForeignKey自定義文件夾模型,但是如何管理沒有外鍵值的頂級文件夾?如果我只是將這個值設置爲NULL,Django會投訴嗎?

任何意見讚賞。

謝謝。

+1

外鍵可以被定義爲'FK = models.ForeignKey( '爲MyModel',空=真,空=真)'使它可以在數據庫中留空。你是這個意思嗎? – 2012-01-27 12:42:19

+0

是的,我不確定這是否會導致Django的問題。謝謝。 – Dan 2012-01-27 15:46:21

回答

2

Treebeard實際上支持三種不同的樹實現,只需選擇一個將滿足您的需求的樹實現。

  • 鄰接表
  • 物化路徑
  • 嵌套集合(可能與SQL樹工作的最快的方法)(快的慢的成本讀取寫入)(非常有效讀取以高昂的維護成本在寫入/刪除操作)

文檔是在這裏:https://tabo.pe/projects/django-treebeard/docs/tip/