0

我发现了一个 id 为 633 的有问题的节点。

tree.find_problems()
([], [], [], [633], [35, 9, 50, 291, 464])

运行 tree.fix_tree() 后没有发现任何问题。

tree.find_problems()
([], [], [], [], [])

但实际上 633 仍然处于某种奇怪的状态。

>>> node633.depth
0
>>> node633.path
''

问题: node633.depth 为 0,这意味着它不是根,但它也没有父级。路径也是空的。

这意味着我的代码将尝试从没有父节点的节点中查找父节点。

再次运行 fix_tree 并不能修复它。移动 node633 也不是一种选择,因为:

treebeard.exceptions.InvalidMoveToDescendant: Can't move node to a descendant.

更多信息:

django-treebeard==4.3
Django==2.2.1

我没有手动编辑路径和深度。

问题:如何修复这个损坏的 node633?

4

1 回答 1

0

我想我没有别的事可做,只是删除它。我跑了:

node633.delete()
tree.find_problems()
([], [], [], [], [])

发现问题还是开心的。

不是理想的解决方案,但欢迎任何更好的解决方案。

于 2021-12-15T13:38:41.677 回答