Я пытаюсь установить необнуляемый объект OneToOneField (который не был установлен) в методе pre_save
.
class A(Model):
b = models.OneToOneField(B, on_delete=CASCADE)
@staticmethod
def pre_save(sender, instance, **kwargs):
try:
instance.b
except RelatedObjectDoesNotExist:
instance.b = B()
instance.b.save()
pre_save.connect(A.pre_save, A)
Даже если объект B создается и сохраняется в базе данных, Я получаю эту ошибку, как будто объект A не указывает на B
django.db.utils.IntegrityError: NOT NULL constraint failed: app_a.b_id
Если я установлю null=True
в определении поля, конечно, я не получаюNOT NULL constraint failed
ошибка.Но, тем не менее, объект A не хранит ссылку на объект B.
Я предполагаю, что это потому, что в исходном объекте A нет ссылки на B, поэтому, когда сохранение выполняется каким-либо образом, оно не 'Я думаю, что это должно сохранить свойство b.
Есть идеи, как это сделать?