关系型数据库的关系包括三种类型:
-
ForeignKey:一对多,将字段定义在多的一端中。
# 一个多对一的关系。需要两个位置参数:模型相关的类和 on_delete 选项。 goods = models.ForeignKey('Goods', on_delete=models.CASCADE)
-
ManyToManyField:多对多,将字段定义在任意一端中。
user = models.ManyToManyField('User',on_delete=models.CASCADE)
-
OneToOneField:一对一,将字段定义在任意一端中。
user = models.OneToOneField('User', on_delete=models.CASCADE)
-
自关联关系 使用'self'指定
# 一对多的自关联 bid = models.ForeignKey('self',null=True,blank=True) # 多对多的自关联 bid= models.ManyToManyField('self',null=True,blank=True)
on_delete的作用:
当一个引用的对象被删除时,Django 将模拟
on_delete
参数所指定的 SQL 约束的行为常用的值:
-
CASCADE:级联删除
Django 模拟了 SQL 约束 ON DELETE CASCADE 的行为,也删除了包含 ForeignKey 的对象
-
PROTECT:防止删除被引用对象
-