我有一个使用Django和TastyPie构建的REST API。我的目标是在将新数据发布到特定模型时将任务添加到我的作业队列中。
我要挂钩到post_save然后触发,但模型包含ManyToMany关系,因此在m2m关系更新之前触发post_save并挂钩到m2m_changed信号似乎很乱。我收到多个信号事件,我的代码需要在每个事件之后检查实例并尝试确定它是否准备好触发事件。一些ManyToMany字段可以是Null,所以当我得到一个m2m_changed信号时,我并不确定它是否已经完成保存。
有没有正确的方法呢? TastyPie允许我挂钩POST事件并在最后做一些事情吗?我发现的所有事情都指向post_save事件来做这件事。
当给定模型实例的所有m2m更新完成时,Django是否有办法发信号?
答案 0 :(得分:7)
如果您使用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
不包括在内。我试过了,它给了我一个错误。
答案 1 :(得分:6)
您应该能够覆盖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