Django TastyPie,如何在POST后使用ManyToMany字段触发操作?

xatque 发布于 2019-03-09 django 最后更新 2019-03-09 14:33 0 浏览

我有一个使用Django和TastyPie构建的REST API。我的目标是在新数据发布到特定模型时将任务添加到我的作业队列中。 我打算进入post_save,然后触发,但是模型包含ManyToMany关系,所以post_save在m2m关系更新之前触发,并且挂接到m2m_changed信号看起来很混乱。我得到了多个信号事件,我的代码需要在每个事件之后检查实例,并尝试确定是否准备好触发事件。 ManyToMany字段中的某些字段可能为空,因此,当我收到m2m_changed信号时,我不确定是否已完成保存。 有没有一个正确的方法来做到这一点? TastyPie是否允许我插入POST事件并最终做些什么?我发现的所有事情都指向了post_save事件来做到这一点。 当给定模型实例的所有m2m更新完成时,Django是否有办法指示我?

已邀请:

quo_et

赞同来自:

您应该能够覆盖obj_update方法

class Resource(ModelResource):
    def obj_update(self, bundle, request, **kwargs):
        bundle = super(Resource, self).obj_update(bundle, **kwargs)
# queue your task here
        return bundle

nquae

赞同来自:

如果您使用的是POST,则obj_update()似乎不适合我。使用obj_create()的工作原理如下:

class Resource(ModelResource):
    def obj_create(self,bundle,**kwargs):
        bundle = super(Resource,self).obj_create(bundle,**kwargs)
# Add code here
return bundle
需要注意的一点是,不包括request。我试过了,它给了我一个错误。