Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从管理员处调用post#U save,但m2m没有';我不能得救_Python_Django_Django Admin - Fatal编程技术网

Python 从管理员处调用post#U save,但m2m没有';我不能得救

Python 从管理员处调用post#U save,但m2m没有';我不能得救,python,django,django-admin,Python,Django,Django Admin,我有一个模型,它在某些情况下保存时会发出自定义信号 当我没有从Django管理员更新我的项目时,运行这个“post_save”可以很好地工作,但是当我使用管理员更改项目时,我看到日志消息正在做它应该做的所有事情。但它并没有得到拯救 我看到上面说这是因为管理员使用视图级锁。因此,我尝试运行transaction.commit(),并将@transaction.commit\u手动添加到信号处理程序中。遗憾的是,数据库中没有保存任何内容 更新:下面的m2m关系组织未正确保存。没有异常或引发任何问题,

我有一个模型,它在某些情况下保存时会发出自定义信号

当我没有从Django管理员更新我的项目时,运行这个“post_save”可以很好地工作,但是当我使用管理员更改项目时,我看到日志消息正在做它应该做的所有事情。但它并没有得到拯救

我看到上面说这是因为管理员使用视图级锁。因此,我尝试运行
transaction.commit()
,并将
@transaction.commit\u手动添加到信号处理程序中。遗憾的是,数据库中没有保存任何内容

更新:下面的
m2m
关系
组织
未正确保存。没有异常或引发任何问题,只是通过管理员时不会将其放入数据库

我的处理程序供参考:

@transaction.commit_manually  # tried this as both first and second decorator
@receiver(node_moved, sender=Folder)
def folder_moved_handler(sender, instance, **kwargs):
    transaction.commit_manually()
    transaction.commit()

    # When a folder was so moved it became root
    if instance.is_root_node():
        # Copy these organisations to the new root
        inherit_permissions_from = instance.inherit_permissions_from
        print inherit_permissions_from

        instance.inherit_permissions_from = None
        instance.save()
        set_inherited_permissions_descendents(instance, None)

        if inherit_permissions_from:
            for org in inherit_permissions_from.organisations_with_access:
                instance.organisations.add(org)
                print 'add org: {0}'.format(org)

    else:
        instance.inherit_permissions_from = get_who_to_inherit_from(instance)
        instance.save()

    print 'returning'
    print transaction.commit()
我现在不知所措,从长远来看,我不再使用管理员来完成这项任务,因为它对于一般的工作流程来说有点笨重,但在我有时间做之前,我只想让它工作

我唯一能想到的就是设置一个标志并每隔一段时间运行一次批处理作业。或者把它传给芹菜,这在目前不是一种依赖

有什么建议吗?

我得到了一个链接,其中提到可能是表单问题。保存后重置我的m2m字段的表单

因此,我做了一些挖掘,并试图创建一个自定义的管理表单,可以做这个表单我。可悲的是,它似乎注定要失败;管理员没有对表单进行提交。它的形式是。然后它,然后最后和

表单上的
保存\u m2m
似乎不可重写。如果我正确地
save_m2m
是动态添加的,并且由于我的自定义表单没有停止任何操作,我现在猜这是真的

因此,我现在要做的是添加一个警告,即我一直试图修复的操作不适用于管理员和指向自定义视图的链接。然后,在未来,这部分应用程序完全不需要管理员。我可以想象,这不是我使用它的方式

所以用麦克·哈默不朽的话来说;我不能碰这个

参考我的模型表格:

class FolderAdminForm(forms.ModelForm):
    def save_m2m(self):
        raise Exception('For the greater good') 

class FolderAdmin(admin.ModelAdmin):
    form = FolderAdminForm
我联系到其中提到的问题可能是形式。保存后重置我的m2m字段的表单

因此,我做了一些挖掘,并试图创建一个自定义的管理表单,可以做这个表单我。可悲的是,它似乎注定要失败;管理员没有对表单进行提交。它的形式是。然后它,然后最后和

表单上的
保存\u m2m
似乎不可重写。如果我正确地
save_m2m
是动态添加的,并且由于我的自定义表单没有停止任何操作,我现在猜这是真的

因此,我现在要做的是添加一个警告,即我一直试图修复的操作不适用于管理员和指向自定义视图的链接。然后,在未来,这部分应用程序完全不需要管理员。我可以想象,这不是我使用它的方式

所以用麦克·哈默不朽的话来说;我不能碰这个

参考我的模型表格:

class FolderAdminForm(forms.ModelForm):
    def save_m2m(self):
        raise Exception('For the greater good') 

class FolderAdmin(admin.ModelAdmin):
    form = FolderAdminForm

您可以覆盖
ModelAdmin
上调用表单的
save\u m2m
save\u related
,如下所示:

class FolderAdmin(admin.ModelAdmin):
    form = FolderAdminForm

    def save_related(self, request, form, formsets, change):
         # Do my own fancy stuff

您可以覆盖
ModelAdmin
上调用表单的
save\u m2m
save\u related
,如下所示:

class FolderAdmin(admin.ModelAdmin):
    form = FolderAdminForm

    def save_related(self, request, form, formsets, change):
         # Do my own fancy stuff

使用芹菜.contrib.rdb进行调试并找出真正发生的事情rdb的具体原因是什么?我已经通过pdb的代码,但由于它没有提出任何例外,我不是很精通的管理代码,我真的不知道该找什么。有什么建议吗?在本例中,我希望运行的是添加m2m关系,它在运行时获得工作输出。但未反映在数据库中:xuse Cellery.contrib.rdb进行调试并找出真正发生的事情rdb的具体原因是什么?我已经通过pdb的代码,但由于它没有提出任何例外,我不是很精通的管理代码,我真的不知道该找什么。有什么建议吗?在本例中,我希望运行的是添加m2m关系,它在运行时获得工作输出。但未反映在数据库中:有时候,一个人觉得自己比一堆砖头还要笨。当然,我可以这样做,因为我正在寻找覆盖所有的地方。我把它归咎于疲劳有时人会觉得自己比一堆砖头还笨。当然,我可以这样做,因为我正在寻找覆盖所有的地方。我把它归咎于疲劳