首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带django_mptt信号的post_save模型

带django_mptt信号的post_save模型
EN

Stack Overflow用户
提问于 2015-06-05 13:10:00
回答 1查看 524关注 0票数 1
代码语言:javascript
复制
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'])

引发“节点不得成为其任何后代的子节点”

代码语言:javascript
复制
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处理程序中排除类别模型时-一切正常

代码语言:javascript
复制
Django==1.8.2
django-mptt==0.7.4

任何想法或解决办法..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-05 13:36:20

def move_to(self,target,position='first-child'):“”使用此模型实例调用TreeManager.move\_node的方便方法。注意:这是一种低级方法;它不尊重MPTTMeta.order\_insertion\_by。在大多数情况下,您应该通过设置node.parent来自己移动节点。“

代码语言:javascript
复制
if instance.parent:
    instance.move_to(instance.parent)
instance.save(update_fields=updated_field_list)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30667399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档