我在我的一个模型上覆盖了 save 方法,如下所示:
class Foo(models.Model):
...
def save(self, *args, **kwargs):
request = kwargs.pop('request', None)
super(Foo, self).save(*args, **kwargs)
some_stuff()
some_stuff() 执行一些查询,这些查询期望新的/修改的 Foo 对象已保存到数据库中(这就是为什么我将它放在 super() 调用之后的原因)。但是,我发现 some_stuff() 何时运行新创建/修改的对象在数据库中不存在。
我对何时将内容写入数据库的理解是否不正确?我还能怎么做(我考虑过信号,但所有这些都在同一个应用程序中,所以这似乎有点过分了)?
更新:我尝试放置一个信号接收器,看看是否有什么不同;实际上,它在 super() 调用完成之前被调用,因此无论我覆盖 save() 是否使用信号,数据库状态都没有什么不同。