我正在使用Ben Firshman的django-MPTT 分叉(Daniel Roseman的建议).
我试图重新订购共享一个共同父节点的节点.我有一个主键列表,如下所示:
ids = [5, 9, 7, 3]
Run Code Online (Sandbox Code Playgroud)
所有这些节点都有一个父节点,比如主键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')
Run Code Online (Sandbox Code Playgroud)
按照文档的move_to说法,我希望按照自己的意愿行事,但似乎没有任何改变.有时它似乎将第一个项目移动ids到其父项的第一个子项,有时它不会.
我说的对,我的文档的阅读move_to,调用move_to一个节点上n具有position=right和目标是一个兄弟n会移动n的目标后,立即?
我有可能搞砸了我的模型表,试图解决这个问题,所以上面的代码可能是正确的.这也有可能是一种更优雅的方式(也许是一种不涉及O(n)选择和O(n)更新的方式).
我误解了什么吗?
奖金问题:有没有办法强制django-MPTT重建lft和rght给定模型的所有实例的值?