【Django 关系模式】Django模型中的关系:一对一、一对多与多对多

Django模型中的关系:一对一、一对多与多对多

数据库中的表存在关联关系,Django中的模型对应数据库中的表,因此Django中的模型也存在一对一、一对多与多对多这三种关系。


在这里插入图片描述



1 . 一对一关系

比如用户基本信息模型类与用户拓展信息模型类,是一对一关系,在模型中用 models.OneToOneField() 来构建模型与模型的一对一关系。

1.1 OneToOneField()的参数

参数参数含义
to要进行关联的模型名称
to_field要进行关联的字段名称(字符串)
on_delete删除关联表中数据时要执行的操作配置项

1.2 on_delete参数配置选型

配置选项配置选项含义
models.CASECADE删除基本信息表时,一并删除拓展信息表中的内容
models.PROTECT删除基本信息表时抛出错误,不删除拓展表中的内容
models.SET_NULL删除时,如果关联表中字段属性设置为null=True时,将此字段内容置空
models.SET_DEFAULT设置为默认值
models.SET设置为指定值
models.DO_NOTHING删除基本信息表时,对关联表不做任何操作

2. 一对多关系

一个用户可以有多个兴趣爱好,用户表与用户爱好表是一对多关系,在模型中用 models.ForeignKey() 方法来构建模型的一对多关系。

2.1 ForeignKey()的参数

参数含义
to要进行关联的模型名称
to_field要进行关联的字段名称
on_delete删除关联表中数据时要执行的操作配置项
related_name=None在反向操作时使用的字段名,用于替代[表名_set]。如obj.表名_set.all()
related_query_name=None在反向操作时,使用的连接前缀,用以替换表名
db_constraint=True是否在数据库中创建外键约束

一对多关系中,一般将ForeignKey()放到多的数据表对应的模型中。


3. 多对多关系

手机型号与手机颜色是多对多关系,一个手机型号可以对应多种颜色,一种颜色也可对应于多种手机型号。在模型中,用 models.ManyToManyField()方法构建模型的多对多关系。

3.1 ManyToManyField()的参数

参数含义
to要进行关联的模型名称
db_constraint=True是否在数据库中创建外键约束
db_table=None默认创建的多对多关系表名

ManyToManyField()方法中没有on_delete参数,db_table参数表示模型迁移后生成的多对多关系的表名,如果不设定,则默认生成的表名为两个模型名称的相加。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流畅的美杜莎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值