Django Model 中的一對一關係(One-to-one Relationships) | Django
模型之間的一對一關係(One-to-one Relationships)是其中一種,它讓我們能夠在兩個模型之間建立連結。
什麼是一對一關係?
在 Django 中,一對一關係表示兩個模型之間僅存在一種對應關係。這意味著每個模型的一個實例都與另一個模型的一個實例相對應,而且反之亦然。
如何定義一對一關係?
要定義一對一關係,我們需要使用 OneToOneField
。讓我們透過一個例子來演示。
假設我們有一個 Person
模型,並且每個人都有一張身份證。這裡我們就可以使用一對一關係:
from django.db import models
class Person(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
class IDCard(models.Model):
number = models.CharField(max_length=20, unique=True)
owner = models.OneToOneField(Person, on_delete=models.CASCADE)
在這個例子中,我們在 IDCard
模型中使用了 OneToOneField
,這個字段確保每張身份證都僅對應到一個人。同時,我們使用了 on_delete=models.CASCADE
,表示當一個人被刪除時,與之相對應的身份證也應該被刪除。
如何使用一對一關係?
一旦我們定義了一對一關係,我們就可以輕鬆地訪問相關聯的對象。讓我們看一個例子:
# 創建一個人物
person = Person.objects.create(name='John Doe', age=30)
# 創建他的身份證
id_card = IDCard.objects.create(number='ABC123', owner=person)
# 通過一對一關係訪問身份證的主人
owner_name = id_card.owner.name
print(f"The owner's name is {owner_name}")
這個例子中,我們創建了一個人物和他的身份證,然後透過 owner
一對一關係,我們可以輕鬆地訪問身份證的主人。
結論
一對一關係讓我們能夠在2個模型之間建立連結。希望這篇文章有助於你更好地理解和應用一對一關係在你的 Django 專案中。如有任何問題,歡迎到 Contact 來信詢問。
Tags