不应该将django的模型get_or_create方法包装在事务中吗?

res*_*efm 10 django django-models

我正在浏览django的源代码并查看了get_or_create.不应该用交易包裹吗?

谢谢

Sha*_*hin 4

查看此差异,它看起来像修订版 8315一样,已在get_or_create()方法中显式处理。

更新

正如 @reshefm 指出的,这个问题在修订版 8670中得到了妥善解决,其中force_insert=True添加的内容obj.save()是为了确保在竞争条件下,所有实例都将尝试插入(而不是回退到更新),因此只有一个实例会成功,而其他实例会失败。失败的实例将继续执行另一个实例get()

从发布版本来看,此修复首次在 1.0 版本中引入。