2024-03-28 22:59:31 发布
网友
正如Django文档所说,select_for_update返回一个Queryset。但是get没有。现在我有一个查询,我确信它只返回一个元组。但我也需要为这个事务获取锁。所以我要做的是:
select_for_update
Queryset
get
ob = MyModel.objects.select_for_update().filter(some conditions)
现在我需要修改ob的一些值。但是ob是一个Queryset。这看起来很简单,但比我强。我对Django很陌生。请给我一些建议。
只需调用get,对其进行切片等,然后照常保存。通过事务锁定到位。
ob = MyModel.objects.select_for_update().get(pk=1)
在事务结束时提交任何更改(默认情况下,每个请求提交1.5个更改)
您can还可以将select_for_update与get_object_or_404函数一起使用:
get_object_or_404
from django.db import transaction from django.shortcuts import get_object_or_404 with transaction.atomic(): obj = get_object_or_404(MyModel.objects.select_for_update(), pk=pk) # do some stuff with locked obj
只需调用
get
,对其进行切片等,然后照常保存。通过事务锁定到位。在事务结束时提交任何更改(默认情况下,每个请求提交1.5个更改)
您can还可以将
select_for_update
与get_object_or_404
函数一起使用:相关问题 更多 >
编程相关推荐