忘れないようにメモっとく

機械学習とかプログラミングとか。

DjangoのDBトランザクション管理

setting.pyに'django.middleware.transaction.TransactionMiddleware'を追加。
トランザクションは他のミドルウェアにも影響を与えるので、基本的に後ろに追加する。

setting.py

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.transaction.TransactionMiddleware',
)

view.py内で、データベースの更新、追加をするとき。
デコレータを使って、トランザクションをコミットする。
views.py

from django.db import transaction
from hogeapp.models import Members

"""
***
"""

@transaction.autocommit
def transview(request):
    m = Members(id=0)
    m.save()
    return HttpResponse('Comitted')

Djangoの管理画面使いやすいな〜。phpmyadmin要らず。