django 同时提交 2 个事务
django commit 2 transactions at the same time
我有一个具有独特位置(队列)的模型。现在,当我想在队列中向上或向下移动一个对象时,我必须更改队列中的 2 个交换位置。
但是,当我尝试保存它们时(我想这是因为所有内容都会自动提交),就会违反唯一约束。
如何在一个事务中保存两个更改?
示例:
skill_1 = Skill.object.get(position=3)
skill_2 = Skill.object.get(position=4)
skill_1.position = 4
skill_2.position = 3
skill_1.save()
skill_2.save()
您应该能够使用 transaction.atomic
显式控制交易
from django.db import transaction
def viewfunc(request):
with transaction.atomic():
skill_1 = Skill.object.get(position=3)
skill_2 = Skill.object.get(position=4)
skill_1.position = 4
skill_2.position = 3
skill_1.save()
skill_2.save()
我有一个具有独特位置(队列)的模型。现在,当我想在队列中向上或向下移动一个对象时,我必须更改队列中的 2 个交换位置。 但是,当我尝试保存它们时(我想这是因为所有内容都会自动提交),就会违反唯一约束。
如何在一个事务中保存两个更改?
示例:
skill_1 = Skill.object.get(position=3)
skill_2 = Skill.object.get(position=4)
skill_1.position = 4
skill_2.position = 3
skill_1.save()
skill_2.save()
您应该能够使用 transaction.atomic
from django.db import transaction
def viewfunc(request):
with transaction.atomic():
skill_1 = Skill.object.get(position=3)
skill_2 = Skill.object.get(position=4)
skill_1.position = 4
skill_2.position = 3
skill_1.save()
skill_2.save()