如何在django-mptt中更改节点的父节点

时间:2013-04-06 16:34:45

标签: django python-2.7 django-mptt

我正在使用django-mptt(Ver 5.5)django-mptt.github.io/django-mptt /

我有一个树形结构:

+Object Oriented
|----Java
+Procedural
|----Python
|----PHP
|----B
|----C

现在我想通过将PythonPHP节点的父节点更改为Object Oriented来重构树,看起来像:

 +Object Oriented
|----Java
|----Python
|----PHP
+Procedural
|----B
|----C

我通过将节点的父属性更改为

来尝试此操作
>>>oo=Nodes.objects.get(name='Object Oriented')
>>>py=Nodes.objects.get(name='Python')
>>>py.parent=oo

这样做之后我得到:

>>>py.parent==oo
True
>>>py.get_ancestors(ascending=False, include_self=False)
[<Nodes : 'Procedural'>]

即使是内置方法,例如:

py.move_to(oo,'first-child')

似乎不适合我。

如果需要更多说明,我的模型是:

from django.db import models
from mptt.models import MPTTModel, TreeForeignKey

class Nodes(MPTTModel):
    name = models.CharField(max_length=50, unique=True)
    parent = TreeForeignKey('self', null=True, blank=True, related_name='children')

    def __unicode__(self):
        return self.name

    class MPTTMeta:
        order_insertion_by = ['name']

请告诉我改变父母的方法。

0 个答案:

没有答案