Как присвоить значение полю "один к одному" в 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)
Вернуться на верх