In a one-to-one
relationship, each record in one model is associated with exactly one record in another model.
For example, lets create a model named Profile
and add a one-to-one
relationship to it.
class Profile(models.Model):
person = models.OneToOneField(Person, on_delete=models.CASCADE)
bio = models.TextField()
After adding this model, you need to run the python manage.py makemigrations
and python manage.py migrate
command.
python manage.py makemigrations
python manage.py migrate
After this, the model for the Profile
has been created.
You can create and link objects with it in the following way :
from modeldemo.models import Person, Profile
person = Person.objects.get(id=1)
profile = Profile.objects.create(person=person, bio='A short bio about Edkool')
profile.person
Here, the Person object is mapped into a one-to-one relationship with the Profile object, As it is a one-to-one relationship, if you try to create another object, with the same person it will show an error.
profile = Profile.objects.create(person=person, bio='Another bio about Edkool')
The error would look like this :
sqlite3.IntegrityError: UNIQUE constraint failed: modeldemo_profile.person_id
In this example, we have a one-to-one relationship between Person
and Profile
, where each person has one unique profile.