Можно ли инициализировать django OneToOneField без изменения связанной стороны до сохранения? - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть модель, которая имеет OneToOneField, которая создает цепочки этой модели.

class Foo(models.Model):
    parent = models.OneToOneField('Foo', related_name='child', null=True, blank=True, on_delete=models.CASCADE)
    ...

Я хочу построить из них цепочки и заменить детали, создав потенциальные более короткие цепочки, которые представлены в виде опций, из которых можно выбрать одну или ни одной.

base = Foo()
base.save()
old_tail = Foo(parent=base)
old_tail.save()

option_1 = Foo(parent=base)
Foo(parent=option_1)

option_2 = Foo(parent=base)
Foo(parent=option_2)

Это швы, как я ошибочно предположить, что ссылка base.child не обновляется до тех пор, пока не будет сохранен один из параметров. Я заметил это, потому что base.child теперь указывает на option_2.
Можно ли создать желаемое поведение? Т.е. чтобы я мог создать потенциальный экземпляр Foo с parent=base, но без изменения base.child, пока я не сохраню их?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...