django在什么时候将对象写入数据库?

时间:2013-08-12 01:05:35

标签: django django-models django-database

我在其中一个模型上覆盖了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()运行时,新创建/修改的对象在DB中不存在。

我对将数据写入数据库的时间的理解不正确吗?我怎么可能这样做(我已经考虑了信号,但所有这些都在同一个应用程序中,所以这似乎有点矫枉过正?)

更新:我试过放一个信号接收器,看看是否有任何区别;实际上它在super()调用结束之前被调用,所以不管是否覆盖save()使用信号,DB状态也没有区别。

1 个答案:

答案 0 :(得分:0)

也许你需要像这样调用some_stuff():self.some_stuff()。 after Super(...)self将是DB中的对象。您可以在方法中使用self进行一些操作。