多对一
例子:如果一个 Car 模型有一个制造者 Manufacturer --就是说一个 Manufacturer 制造许多辆车,但是每辆车都仅有一个制造者-- 那么使用下面的方法定义这个关系:
python
from django.db import models
# 制造商
class Manufacturer(models.Model):
# ...
pass
# 汽车
class Car(models.Model):
# ForeignKey字段,Manufacturer为关联的模型
manufacturer = models.ForeignKey(Manufacturer, on_delete=models.CASCADE)
# ...
ForeignKey
字段名最好是关联的模型名,需要添加一个位置参数,即关联的模型类名。
一对一
例子:一个餐厅的模型,和一个位置信息模型,一个餐厅对应一个地点。
python
from django.db import models
# 位置信息
class Place(models.Model):
# ...
pass
# 餐厅
class Restaurant(models.Model):
# OneToOneField字段,Manufacturer为关联的模型
place = models.OneToOneField(Place, on_delete=models.CASCADE)
# ...
处理这样的情况时最好使用模型继承 ,它隐含的包括了一个一对一关系。
ForeignKey
和OneToOneField
可以创建自关联关系,也可以创建与尚未定义的模型的关系(模型名称用引号括起来)