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 來信詢問。