我正在尝试比较一个值并在没有竞争条件的情况下递减它。以下代码不正确,因为可以在条件和赋值中修改“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")
这是更好的,但条件仍然倾向于竞争条件。我怎样才能解决这个问题?