OneToOne Relationship Example
A snippet showing how to use OneToOneField in Django models.
# models.py
from django.db import models
class User(models.Model):
username = models.CharField(max_length=100)
def __str__(self):
return self.username
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
bio = models.TextField(blank=True)
avatar = models.ImageField(upload_to='avatars/', blank=True, null=True)
def __str__(self):
return f"Profile of {self.user.username}"
# Django Shell
>>> from accounts.models import User, Profile
>>> user = User.objects.create(username='john_doe')
>>> profile = Profile.objects.create(user=user, bio='Django Developer')
>>> profile.user.username
'john_doe'
>>> user.profile.bio
'Django Developer'
Explanation:
-
OneToOneFieldcreates a one-to-one link between two models (each user has one profile). -
on_delete=models.CASCADEensures that if the user is deleted, the profile is also removed. -
The
related_namemakes it easy to access the profile from the user model (user.profile). - Commonly used for extending user models with extra information like bio, avatar, or social links.
- Category Models & ORM
- Total Views 935
- Last Modified 30 September, 2025
- Tags #models #relationships #onetoone #orm
Previous snippet
ManyToMany Relationship Example
Next snippet