Код удара
@transaction.atomic
def cancel_one(o_id):
order= Order.objects.select_for_update().get(id=o_id)
повышает
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)
Результат кода
# Step1
-----------------------
DO
-----------------------
# Step2
-----------------------
DO
"We're inside a transaction!"
-----------------------