0

我希望在多个不相关的对象上使用.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()
4

0 回答 0