[Django---ORM----> 表模型之on_delete参数、数据库关系分析、ORM操作关系 (外键位置及参数)]
2022/6/10 2:21:11
本文主要是介绍[Django---ORM----> 表模型之on_delete参数、数据库关系分析、ORM操作关系 (外键位置及参数)],对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
[表模型之on_delete参数,数据库关系分析,ORM操作关系(外键位置及参数)]
表模型之on_delete参数
''' 表关系 on_delete 值 * 代表使用频率 作者没,作者详情一定没:CASCADE (*****) 作者没,书还是该作者的:DO_NOTHING (管理的主键id不会有任何变化) 部门没。部门内的员工全部进入未分组部门: SET_DEFAULT(需要配合default属性使用) 部门没。部门内的员工部门外键字段设置为空, SET_NULL(需要配合NULL=True属性使用) (*****) '''
数据库关系分析
""" 1)之间有关系的两个表,增删改操作会相互影响(效率低),查询操作就是正常的连表操作 2)之间有关系的两个表,断开关联,但所有数据保持与原来一致 每个表都可以单独操作,增删改操作效率极高,但是容易出现脏数据(开发中完全可以避免) 由于数据没有任何变化,所以查询的连表操作不会受到任何影响 3)Django的ORM支持断关联操作关系表,且所有的操作方式和没有断关联操作一致 """
ORM操作关系
""" 外键位置: 1)一对多:ForeignKey必须放在多的一方,书与出版社,外键应该放在书表 2)多对多:ManyToManyField放在任何一方都可以,因为会创建关系表,在关系表中用两个外键分别关联两个表 3)一对一:OneToOneField放在依赖的表,作者与作者详情,放在详情表,OneToOneField会被转换为 外键 + 唯一约束 """ """ ORM关系Field: ForeignKey可以设置related_name, db_constraint, on_delete OneToOneField可以设置related_name, db_constraint, on_delete ManyToManyField只能设置related_name, db_constraint 不能设置on_delete的原因:不管是关联的A表,还是B表,数据修改,都会影响到关系表(默认级联), 如果想控制,只能自定义关系表,在关系表的两个外键分别设置on_delete """ """ 参数含义 related_name:表之间反向访问的名字,默认是 表名小写|表名小写_set db_constraint:表之间的关联关系,默认为True,代表关联,设置False,可以提高增删改的效率,且不影响查等其他操作 on_delete:在django 1.x下默认是CASCADE,在django 2.x下必须手动明确 """
这篇关于[Django---ORM----> 表模型之on_delete参数、数据库关系分析、ORM操作关系 (外键位置及参数)]的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。
- 2024-10-20goland工具下,如修改一个项目的标准库SDK的版本-icode9专业技术文章分享
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南