代码一击
@transaction.atomic
def cancel_one(o_id):
order= Order.objects.select_for_update().get(id=o_id)
Run Code Online (Sandbox Code Playgroud)
加注
TransactionManagementError('select_for_update 不能在事务之外使用。')
django.db.transaction.TransactionManagementError: select_for_update 不能在事务之外使用。
我已经检查过我的代码是否在交易中 transaction.get_connection().in_atomic_block.
它出现在交易中,但仍然引发
错误:django.db.transaction.TransactionManagementError:select_for_update 不能在事务之外使用。
我的代码:
# Step1
def cancel_one(o_id):
print("DO")
cxn = transaction.get_connection()
if cxn.in_atomic_block:
print("We're inside a transaction!")
order= Order.objects.select_for_update().get(id=o_id)
# Step2
@transaction.atomic
def cancel_one(o_id):
print("DO")
cxn = transaction.get_connection()
if cxn.in_atomic_block:
print("We're inside a transaction!")
order= Order.objects.select_for_update().get(id=o_id)
Run Code Online (Sandbox Code Playgroud)
代码结果
# Step1
-----------------------
DO
-----------------------
# Step2
-----------------------
DO
"We're inside a transaction!"
-----------------------
Run Code Online (Sandbox Code Playgroud)