django:没有竞争条件的比较和减少

时间:2017-04-05 09:10:32

标签: django

我正在尝试比较一个值并在没有竞争条件的情况下递减它。以下代码不正确,因为可以在条件和赋值中修改“stock”。

if product.stock >= requested:
    product.stock -= requested
    product.save()
else:
    raise Error("Product not available")

我读到了关于F()表达式以防止竞争条件。

if product.stock >= requested:
    product.stock = F('stock') - requested
    product.save()
else:
    raise Error("Product not available")

这是更好的,但条件仍然倾向于竞争条件。我怎样才能解决这个问题?

0 个答案:

没有答案