将ATOMIC_REQUESTS该字段设置为true
# 数据库
DATABASES = {
'default': {
'ATOMIC_REQUESTS': True,
'ENGINE': 'django.db.backends.mysql',
'NAME': '',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '3306'
},
}
对一个http请求对应的所有sql都放在一个事务中执行(要么所有都成功,要么所有都失败)。
是全局性的配置, 如果要对某个http请求放水(然后自定义事务),可以用non_atomic_requests修饰器
from django.db import transaction
class xxx(xxxView):
@transaction.non_atomic_requests
def post(self, request, *args, **kwargs):
...