升级到 Django 1.6 在我的代码中引入了一个棘手的问题:由 post_save
信号触发的数据库操作包含在
与 transaction.atomic():
Django 的 get_or_create()
block 。
对我的影响是自定义 SQL(非托管)没有及时提交到数据库。
是否有一个不同的信号可供我使用,在 obj.save()
退出其原子 block 之后发送?
还是我诊断错了?
最佳答案
Django 的 get_or_create()
在原子 block 中执行其 save()
,并且 post_save 触发的信号嵌套在该原子 block 内。
我的解决方法是在自定义管理器中使用我自己的版本覆盖 native get_or_create()
,而不使用 transaction.atomic()
block 。
关于由 post_save 信号执行的 Django 代码发生在原子事务中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21741893/