相关疑难解决方法(0)

在django-MPTT中重新排序子节点

我正在使用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重建lftrght给定模型的所有实例的值?

django django-mptt

7
推荐指数
1
解决办法
4229
查看次数

标签 统计

django ×1

django-mptt ×1