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 во время транзакции?