我有一个遍历列表的函数,如果需要,可以添加一个Django记录并使用.save()
在该循环之后,调用了另一个函数,该函数访问刚刚或可能没有对其执行保存操作的表。
当调用第二个函数时,似乎还有待处理的保存。
django中是否有一种方法可以等待当前操作完成,或者这种竞争条件的最佳实践是什么?
我在调用第二个函数之前先入睡了,它确实有足够的时间来完成。这不好,因为睡眠是随意的。
答案 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)