6

我正在寻找一种在 Django 中存储和使用分层(父/子)数据的好方法。我一直在使用django-mptt,但它似乎与我的大脑完全不兼容 - 我最终在不明显的地方遇到不明显的错误,主要是在树中移动东西时:我最终状态不一致,其中节点和它的父节点会不同意他们的关系。

我的需求很简单:

  • 给定一个节点:
    • 找到它的根源
    • 找到它的祖先
    • 找到它的后代
  • 用一棵树:
    • 轻松移动节点(即更改父节点)

我的树会很小(最多 10k 个节点超过 20 个级别,通常要小得多,比如 10 个节点具有 1 个或 2 个级别)。

我不得不认为必须有一种更简单的方法在 python/django 中创建树。还有其他方法可以更好地保持一致性吗?

4

1 回答 1

4

django-treebeard是另一种选择。它有很好的文档。我相信它满足您上述所有要求,并包括一些用于检查树是否存在问题并修复树中的问题的功能。

Node.find_problems() https://tabo.pe/projects/django-treebeard/docs/1.60/api.html#treebeard.models.Node.find_problems

Node.fix_tree() https://tabo.pe/projects/django-treebeard/docs/1.60/api.html#treebeard.models.Node.fix_tree

于 2010-04-23T17:29:53.303 回答