رابطه یک به یک - OneToOne
در این نوع رابطه یک رکورد از یک مدل میتواند فقط با یک رکورد از مدل دیگر مرتبط باشد. برای مثال یک کاربر فقط میتواند یک پروفایل داشته باشد و همینطور یک پروفایل نیز فقط متعلق به یک کاربر است.
برای استفاده از رابطه one-to-one در مدلهای جنگو باید از گزینه OneToOneField برای فیلد استفاده نمود تا بدین صورت رابطه یک به یک(one-to-one) را تعریف کرد. برای درک بهتر، مدلی را فرض میگیریم که نام شرکتهای خودرو سازی را یدک میکشد و همچنین مدل دیگری که مدیرعامل شرکتها را شامل میشود. این دو مدل مفهوم فیلد OneToOne را ایجاد خواهند کرد چرا که:
- یک شرکت خودروسازی تنها میتواند یک مدیرعامل داشته باشد.
- یک نفر میتواند تنها در یک شرکت خودروسازی به عنوان میدعامل مشغول به کار شود.
فیلد company در مدل ceo بصورت OneToOne به مدل company مرتبط شده است. بدین صورت از طریق فیلد company به تمامی اطلاعات مدل company دسترسی خواهد داشت. همچنین در مدل company، از طریق مدل ceo به تمامی فیلدهای آن دسترسی خواهیم داشت.
حال با فرض داشتن دادههای دو مدل بهصورت ذیل، میتوان جستجوی رکوردها – کوئری - را انجام داد
با کوئری از سمت مدل company:
و با کوئری از سمت مدل ceo: