我希望在多个不相关的对象上使用.select_for_update
. 我需要用 包装每个电话transaction.atomic
吗?我已经阅读了Django 文档和 postgres 的行锁定中的部分,但目前还不清楚。
from django.db import models
class A(models.Model):
data = models.TextField()
class B(models.Model):
data = models.TextField()
这是一个人为的例子,但鉴于上述模型,我可以这样做吗?
def update_records(pk_a, pk_b, value):
with transaction.atomic():
a_object = A.objects.get(pk=pk_a).select_for_update()
b_object = B.objects.get(pk=pk_b).select_for_update()
# modify values, etc
还是我需要这样做?
def update_records(pk_a, pk_b, value):
with transaction.atomic():
a_object = A.objects.get(pk=pk_a).select_for_update()
with transaction.atomic():
b_object = B.objects.get(pk=pk_b).select_for_update()