栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

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


1 . 一对一关系

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

1.1 OneToOneField()的参数

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

1.2 on_delete参数配置选型

配置选项配置选项含义
CASECADE删除基本信息表时,一并删除拓展信息表中的内容
PROTECT删除基本信息表时抛出错误,不删除拓展表中的内容
SET_NULL删除时,如果关联表中字段属性设置为null=True时,将此字段内容置空
SET_DEFAULT设置为默认值
SET设置为指定值
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参数表示模型迁移后生成的多对多关系的表名,如果不设定,则默认生成的表名为两个模型名称的相加。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1038025.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号