向 django-mptt 树添加一个新的根节点

Add a new root node to django-mptt tree

如何在 django-mptt 中向现有树添加新的根节点?我正在使用 Django 1.7.4 和 django-mptt==0.6.1 与 FactoryBoy 来测试树。我尝试了以下方法:

my_leaf.move_to(my_root, position='left') # creates a new tree
my_leaf.move_to(None, position='this_is_ignored') # also creates a new tree

newroot = factories.MyFactory.build(parent=None, name="NewRoot")
newroot.insert_at(self.my_root, position='left', save=True) 

我所做的一切都会创建一棵新树。

一棵树有一个根节点。如果您尝试添加一个新的根节点,则意味着添加一棵新树。 django-mptt 支持拥有一棵树(只创建一个根节点)或一整片森林。

你基本上永远不需要使用 .move_to(),除非你正在做一些非常特别的事情,比如用户手动排序的节点。只需将父级设置为 None。我对 FactoryBoy 了解不多,但创建新根节点的常用方法是:

MyNode.objects.create(name='NewRoot', parent=None)