我正在使用 Ben Firshman 的django-MPTT 分支(Daniel Roseman的建议)。
我一直试图重新排序共享一个共同父节点的节点。我有一个主键列表,如下所示:
ids = [5, 9, 7, 3]
所有这些节点都有一个父节点,比如主键 1。
目前,这些节点是有序的[5, 3, 9, 7]
,我怎样才能将它们重新排序[5, 9, 7, 3]
?
我试过这样的事情:
last_m = MyModel.get(pk = ids.pop(0))
last_m.move_to(last_m.parent, position='first-child')
for id in ids:
m = MyModel.get(pk = id)
m.move_to(last_m, position='right')
根据 上的文档move_to
,我希望做我想做的事,但它似乎并没有改变任何东西。有时它似乎将第一项移入ids
其父项的第一个子项,有时则不然。
我在阅读文档中是否正确地move_to
调用move_to
了一个节点和一个目标,该目标是一个兄弟节点n
,将立即移动到目标之后?position=right
n
n
有可能我在试图弄清楚这一点时搞砸了我的模型表,所以也许上面的代码实际上是正确的。也有可能有一种更优雅的方式来执行此操作(可能不涉及O(n)
选择和O(n)
更新)。
我误解了什么吗?
额外的问题:有没有办法强制 django-MPTT 为给定模型的所有实例重建lft
和赋值?rght