رابطه یک به یک - OneToOne
در رابطه One-To-One، هر رکورد از یک مدل میتواند، دقیقاً با یک و فقط یک رکورد از مدل دیگر مرتبط باشد و بالعکس، برخلاف رابطه ForeignKey — رابطه فرزند و والد — در رابطه OneToOne هر دو طرف تنها یک همسر دارند!

نمونههای دنیای واقعی
- هر کاربر (User) فقط یک پروفایل (Profile) دارد و همینطور یک پروفایل نیز فقط متعلق به یک کاربر است.
- هر شرکت (Company) فقط یک مدیرعامل (Ceo) دارد و همینطور یک مدیرعامل فقط مالک یک شرکت است.
- هر خودرو (Car) فقط یک شماره شاسی (VIN) دارد و همینطور یک شماره شاسی متعلق به یک خودرو میباشد.
برای استفاده از رابطه one-to-one در مدلهای جنگو باید از گزینه OneToOneField برای فیلد استفاده نمود تا بدین صورت رابطه یک به یک (one-to-one) را تعریف کرد.
clientapp/models.py
# clientapp.models.py
from django.db import models
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE) # OneToOne Field
mobile = models.CharField(max_length=15, unique=True)
birth = models.DateField(null=True, blank=True)
avatar = models.ImageField(upload_to='profiles/', null=True, blank=True)
id = models.UUIDField(default=uuid.uuid4, primary_key=True, unique=True, editable=False)
def __str__(self):
return self.user.username