class Category(MPTTModel):
name = models.CharField(max_length=256)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children', db_index=True)
class MPTTMeta:
order_insertion_by = ['name']
@receiver(post_save)
def translate_name(sender, instance, created, **kwargs):
if sender not in [Category]:
return
if created:
# some operations with 'name_ru' 'name_en' fields (since django-modeltranslation)
instance.save(update_fields=['name'])引发“节点不得成为其任何后代的子节点”
node <Category: Obj3>
right 3L
target <Category: Obj2>
level 1L
self <mptt.managers.TreeManager object at 0x108a76d10>
width 2L
new_tree_id 2L
tree_id 2L
position u'last-child'
left 2L当我从这个post_save处理程序中排除类别模型时-一切正常
Django==1.8.2
django-mptt==0.7.4任何想法或解决办法..。
发布于 2015-06-05 13:36:20
def move_to(self,target,position='first-child'):“”使用此模型实例调用
TreeManager.move\_node的方便方法。注意:这是一种低级方法;它不尊重MPTTMeta.order\_insertion\_by。在大多数情况下,您应该通过设置node.parent来自己移动节点。“
if instance.parent:
instance.move_to(instance.parent)
instance.save(update_fields=updated_field_list)https://stackoverflow.com/questions/30667399
复制相似问题