Database Django-可选递归关系

Database Django-可选递归关系,database,django,recursive-datastructures,Database,Django,Recursive Datastructures,我试图使用Django创建一个递归关系,它为用户提供了一个类似文件夹的层次结构,用户可以在其中放置资源 实现这一目标的最佳方式是什么 我知道我可以使用treebeard或mptt创建嵌套集,但我已经了解到,更改树结构(在本例中会经常发生这种情况)可能是一项非常密集的操作,因为许多字段都必须更新 另一方面,我可以使用ForeignKey设置为self的文件夹模型,但如何管理没有外键值的顶级文件夹?如果我只是将这个值设置为NULL,Django会抱怨吗 谢谢你的建议 谢谢。Treebeard实际上支

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

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

我知道我可以使用treebeard或mptt创建嵌套集,但我已经了解到,更改树结构(在本例中会经常发生这种情况)可能是一项非常密集的操作,因为许多字段都必须更新

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

谢谢你的建议


谢谢。

Treebeard实际上支持三种不同的树实现,只需选择一种适合您需要的树实现即可

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

文档在这里:

外键可以定义为
fk=models。外键('MyModel',null=True,blank=True)
以便在数据库中保留为null。这就是你的意思吗?是的,我不确定这是否会引起Django的问题。谢谢