在我看来,我将数据保存在多个模型中:
def myview(request):
#do some processing
model1.save()
model2.save()
如何确保有回滚model1.save()
以防万一model2.save()
引发错误?或者如何在两个模型都成功保存后才提交?
换句话说,“如果两个 save() 都成功,则仅保存 model1 和 model2”,或者“在事务内执行这两个保存”。
Use an 原子事务 https://docs.djangoproject.com/en/1.8/topics/db/transactions/#django.db.transaction.atomic:
原子性是数据库事务的定义属性。原子允许我们创建一个代码块,在其中保证数据库的原子性。如果代码块成功完成,则更改将提交到数据库。如果出现异常,则回滚更改。
例子:
from django.db import transaction
with transaction.atomic():
model1.save()
model2.save()
and
from django.db import transaction, IntegrityError
try:
with transaction.atomic():
model1.save()
model2.save()
except IntegrityError:
handle_exception()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)