Djangoで「TransactionManagementError」が発生

django.db.transaction.TransactionManagementError: select_for_update cannot be used outside of a transaction.

トランザクションをしないで、取ってきた値利用すると、
djangoにトランザクションしてないぞっておこられるみたい。

from django.db import transaction

@transaction.atomic
def your_function():
    your_model.objects.select_for_update().filter(...)

トランザクションとかどうでもいい関数だったら、関数にトランザクションをつけられる

from django.db import transaction

def your_function():
    with transaction.atomic():
        your_model.objects.select_for_update().filter(...)

ちゃんとやる場合は、transaction内でselect_for_update()とかを呼ぶとできる

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です