Django - 可选的递归关系

时间:2012-01-27 12:26:45

标签: database django recursive-datastructures

我正在尝试使用Django创建一个递归关系,它为用户提供了一个类似文件夹的层次结构,可以在其中放置资源。

实现这一目标的最佳方式是什么?

我知道我可以使用treebeard或mptt来创建一个嵌套集但是我已经读过,对树结构进行更改(在这种情况下会发生很多事情)可能是一个非常密集的操作,因为很多字段必须更新。

另一方面,我可以使用ForeignKey将文件夹建模为自己,但如何管理没有外键值的顶级文件夹?如果我将此值设置为NULL,Django会抱怨吗?

任何建议表示赞赏。

感谢。

1 个答案:

答案 0 :(得分:2)

Treebeard实际上支持三种不同的树实现,只需选择满足您需求的树实现。

  • 邻接列表(以慢速读取为代价快速写入)
  • 物化路径(可能是SQL中使用树的最快方式)
  • 嵌套集(以写入/删除操作的高维护成本高效读取)

文档在这里:https://tabo.pe/projects/django-treebeard/docs/tip/