ForeignKey
ForeignKey 欄位用於在模型之間建立 many-to-one
關係。不像大多數其他欄位需要位置引數。以下示例演示了汽車和所有者關係:
from django.db import models
class Person(models.Model):
GENDER_FEMALE = 'F'
GENDER_MALE = 'M'
GENDER_CHOICES = (
(GENDER_FEMALE, 'Female'),
(GENDER_MALE, 'Male'),
)
first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
age = models.SmallIntegerField()
class Car(model.Model)
owner = models.ForeignKey('Person')
plate = models.CharField(max_length=15)
brand = models.CharField(max_length=50)
model = models.CharField(max_length=50)
color = models.CharField(max_length=50)
該欄位的第一個引數是與模型相關的類。第二個位置引數是 on_delete
引數。在當前版本中,此引數不是必需的,但在 Django 2.0 中將是必需的。引數的預設功能如下所示:
class Car(model.Model)
owner = models.ForeignKey('Person', on_delete=models.CASCADE)
...
當從 Person 模型中刪除其所有者時,這將導致從模型中刪除 Car 物件。這是預設功能。
class Car(model.Model)
owner = models.ForeignKey('Person', on_delete=models.PROTECT)
...
如果 Person 物件與至少一個 Car 物件相關,則會阻止刪除它們。應首先刪除引用 Person 物件的所有 Car 物件。然後可以刪除 Person 物件。