5

我有一个使用 Django 和 TastyPie 构建的 REST API。我的目标是在将新数据发布到特定模型时将任务添加到我的作业队列中。

我本来打算挂入 post_save 并触发,但模型包含 ManyToMany 关系,因此在 m2m 关系更新之前触发 post_save 并挂入 m2m_changed 信号似乎很混乱。我收到多个信号事件,我的代码需要在每个事件之后检查实例并尝试确定它是否已准备好触发事件。一些 ManyToMany 字段可以为 Null,因此当我收到 m2m_changed 信号时,我并不确定它是否已完成保存。

有没有正确的方法来做到这一点?TastyPie 是否允许我加入 POST 事件并在最后做点什么?我发现的所有事情都指向我在 post_save 事件中执行此操作。

当给定模型实例的所有 m2m 更新完成时,Django 是否有办法向我发出信号?

4

2 回答 2

8

如果您正在使用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是不包括在内。我试过了,它给了我一个错误。

于 2013-05-24T22:30:37.963 回答
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
于 2013-04-12T06:38:05.530 回答