У меня есть модель, которая имеет 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
, пока я не сохраню их?