1

我在我的一个模型上覆盖了 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() 是否使用信号,数据库状态都没有什么不同。

4

1 回答 1

0

也许你需要像这样调用 some_stuff():self.some_stuff()。after Super(...),self将是数据库中存在的对象。你可以用self你的方法做一些事情。

于 2013-08-12T01:40:14.447 回答