django等待数据库操作完成

时间:2018-08-20 17:42:49

标签: django postgresql

我有一个遍历列表的函数,如果需要,可以添加一个Django记录并使用.save()

在该循环之后,调用了另一个函数,该函数访问刚刚或可能没有对其执行保存操作的表。

当调用第二个函数时,似乎还有待处理的保存。

django中是否有一种方法可以等待当前操作完成,或者这种竞争条件的最佳实践是什么?

我在调用第二个函数之前先入睡了,它确实有足够的时间来完成。这不好,因为睡眠是随意的。

1 个答案:

答案 0 :(得分:0)

自己控制 Commit 或查看 Perform action after commit

我遇到了类似的问题,因此我必须启动一个函数,该函数使用我刚刚通过 ModelAdmin 保存的数据。我用 transaction.on_commit 来做这个,如下:

from django.db import transaction

def do_verification():
    # do stuff
    pass

@register(Revendeurs)
Class RevendeursAdmin(ModelAdmin):
    ...
    def save_model(self, request, obj, form, change):
        transaction.on_commit(do_verification)
        ...
        super().save_model(request, obj, form, change)