Django select_for_update: Можно ли разрешить создание связанных объектов во время транзакции?

Postgres DB

Например, если у вас есть модели:

class Foo(models.Model):
    name = models.CharField()

class Bar(models.Model):
    foo = models.ForeignKey(Foo)

Есть ли способ создать новый экземпляр Bar во время транзакции, у которого поле ForeignKey установлено на экземпляр Foo, который в данный момент заблокирован? Я пробовал использовать 'self' в аргументе 'of', но, похоже, это не работает.

Eg:

with transaction.atomic():
    foo = Foo.objects.select_for_update().get(id=1)
    # other stuff
    Bar.objects.create(foo=foo)
    # other stuff

Создание экземпляра Bar не повлияет на причины, по которым мне нужна атомарность транзакции, но кажется, что попытка создать Bar вызывает большую задержку в моих задачах. Могу ли я как-то разрешить такое поведение или заблокировать только определенные поля Foo во время транзакции?

Вернуться на верх