我在其中一个模型上覆盖了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状态也没有区别。
答案 0 :(得分:0)
也许你需要像这样调用some_stuff():self.some_stuff()。 after Super(...)
,self
将是DB中的对象。您可以在方法中使用self
进行一些操作。