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 对象。