【发布时间】:2013-04-03 22:12:46
【问题描述】:
我有一个使用 Django 和 TastyPie 构建的 REST API。我的目标是在将新数据发布到特定模型时将任务添加到我的作业队列中。
我本来打算挂接到 post_save 并触发,但模型包含 ManyToMany 关系,因此在 m2m 关系更新之前触发 post_save 并挂接到 m2m_changed 信号似乎很混乱。我收到多个信号事件,我的代码需要在每个信号事件之后检查实例并尝试确定它是否已准备好触发事件。一些 ManyToMany 字段可以为 Null,因此当我收到 m2m_changed 信号时,我并不确定它是否已完成保存。
有没有正确的方法来做到这一点? TastyPie 是否允许我加入 POST 事件并在最后做点什么?我发现的所有事情都指向我在 post_save 事件中执行此操作。
当给定模型实例的所有 m2m 更新完成时,Django 是否有办法向我发出信号?
【问题讨论】:
-
我发现了一种稍微不那么令人不快的方法,方法是覆盖所有模型保存后调用的 sweetpie create_response() 方法。我还是不喜欢。
-
我也尝试使用 wrap_view,但这需要我重新解析响应的内容以获取刚刚创建的对象的 ID。看起来效率很低。