Как присвоить значение полю "один к одному" в django
Я только начинаю изучать django и пытаюсь присвоить значение полю один-к-одному в моих моделях с помощью оболочки manage.py. Я пытаюсь сделать это, но не уверен, почему он не присваивает значение Author.address
author1 = Author.objects.get(first_name="Sam")
addr1 = Address.objects.get(post_code="12345")
author1.address = addr1
Какой-нибудь пропущенный шаг я пропустил?
class Author(models.Model):
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
address = models.OneToOneField(Address, on_delete=models.CASCADE, null=True)
def full_name(self):
return f"{self.first_name} {self.last_name}"
def __str__(self):
return self.full_name()
class Address(models.Model):
street = models.CharField(max_length=80)
postal_code = models.CharField(max_length=5)
city = models.CharField(max_length=50)
def __str__(self):
return f"{self.street}"
Спасибо
Вы должны сохранить модель после присвоения
author1 = Author.objects.get(first_name="Sam")
addr1 = Address.objects.get(post_code="12345")
author1.address = addr1
author1.save()
Также вы можете обновить отношение 1-к-1 с помощью метода update
addr1 = Address.objects.get(post_code="12345")
Author.objects.filter(first_name="Sam").update(address=addr1)