如何构建 django-mptt 树而不在每次插入后重建?
我正在构建大型 mptt 树。 我想插入所有节点,然后启动重建整个树的方法:
for i in range(big_loop):
...
m.save() # Saving mptt object. Tree is rebuild.
some_mptt_model.tree.rebuild()
如何避免每次插入后重建树?
我在 .save
方法中只发现了 depracted 关键字:
在早期版本中,MPTTModel.save() 有一个原始关键字参数。如果 确实,MPTT 字段在保存期间不会更新。这 (未记录的)参数现已被删除。
I'm building large mptt tree.
I'd like to insert all nodes and after that start method for rebuilding whole tree:
for i in range(big_loop):
...
m.save() # Saving mptt object. Tree is rebuild.
some_mptt_model.tree.rebuild()
How can I avoid rebuilding tree after each insert?
I've found only depracted keyword in .save
method:
In earlier versions, MPTTModel.save() had a raw keyword argument. If
True, the MPTT fields would not be updated during the save. This
(undocumented) argument has now been removed.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用 在每次插入后禁用重建树disable_mptt_updates 方法:
You can disable rebuilding tree after each insert using disable_mptt_updates method:
也许可以借助 代理模型。在代理模型中,可以重写
save
方法来调用models.Model
的save
方法,而不是 MPTTsave
方法。像这样的事情:我没有尝试这段代码,但我想它可以工作。
Maybe this can be solved with a help of Proxy models. In proxy model,
save
method could be overriden to callsave
method ofmodels.Model
instead of MPTTsave
method. Something like this:I did not try this code, but I guess it could work.