三流,内部类,基表,表关系,断开表关联,外键字段属性
目录
1|0一、三流
- 三流就是输入输出流和错误流
- python的print语法底层就是通过这三流实现的
print
方法中有个end
参数,默认是\n
,所以我们一个print就会换一次行。
1|11. 标准输入流
1|22. 标准输入流
1|33. 标准错误流
2|0二、内部类
- python中,允许一个类中定义其他的类,函数内部定义其他函数(即闭包函数)。但其他语言中,函数内部不能定义其他函数,函数只能单独定义或在类的内部定义,所以其他语言都是函数套类再套函数。
- 在python中,一个类的内部类,一般都是用来对外层的类进行配置。
3|0三、基表
3|11. 什么是基表
- 在django的models中,模型类继承的类就是基表。
- 基表,为抽象表,是专门用来被继承,为继承的模型表提供公有字段的,自身不会完成数据库迁移
3|22. 如何定义基表
- models文件中:
4|0四、断关联表关系
4|11. 为什么要断开关联表关系
- 在实际开发中,有时候一个项目中的数据表会有很多,有各种外键关联,此时表关系就会很复杂。在进行数据的增删改时会非常繁琐,且后期数据库的重构基本不能实现。因此这时我们就需要断开表关系了。
- 当然若是数据表较少,则就没必要断开表关系了。
4|22. 断开表关系后的优缺点
(1)优点:
- 不会影响连表查询操作效率,即依然可以用没断连接时的连表查询方法,不会有任何影响
- 会提升连表增删改操作效率
- 易于后期数据库表的重构
(2)缺点
- 缺点在于:数据库本身没有连表检测,容易出现脏数据,需要通过严格的逻辑避免脏数据的产生(必要的时候管理脏数据)
(3)例子
5|0五、表关系创建
5|11. 如何创建表关系
-
无论使用什么数据库,创建表关系的规律不变的。
-
一对多:外键建在多的一方
-
一对一:外键要根据实际需求建立在合理的位置
-
多对多:需要第三张表来管理表关系。外键创建在第三张表中。(在django中,创建第三张表的虚拟字段创建在查询频率高度一方)
5|22. Django项目中的外键字段的属性
-
注意:Django项目中,多对多关系表是依靠一个虚拟字段(
ManyToMany
)来创建的,这个字段不是外键字段,而一对一(OneToOne
)的字段其实也是外键字段,所以不能给多对多的虚拟字段设置on_delete
属性 -
暂时掌握3个外键字段属性
related_name
on_delete
(注意:只能在外键字段中设置)db_constraint
(1)related_name
- 在外键中设置反向查询的字段名:正向找按字段名,反向找按
related_name
设置的值 - 不设置则反向查询默认是按:表名小写_set
(2)on_delete
-
在Django的1.x版本中,系统默认提供(值为
models.CASCADE
),Django 2.x中,必须手动指定。 -
共有4种参数:
-
models.CASCADE
- 级联。例子:A表依赖B表,B记录删除,A中对应的数据也跟着删除
-
models.DO_NOTHING
- 不级联。例子:A表依赖B表,B记录删除,A表中对应的数据不做任何变动
-
models.SET_DEFAULT
-
这个是他们中的最不常用的参数
-
半级联。例子:A表依赖B表,B记录删除,A表中对应的数据的外键字段置为
default
属性设置的值,所以必须配合default
属性使用
-
-
models.SET_NULL
- 半级联。例子:A表依赖B表,B记录删除,A表中对应的数据的外键字段置为
null
,所以必须配合null=True
属性使用
- 半级联。例子:A表依赖B表,B记录删除,A表中对应的数据的外键字段置为
-
(3)db_constraint(重点)
- 在外键字段中控制表关联,默认为True表示关联,设置False表示断开关联
__EOF__

本文作者:BigSun丶
本文链接:https://www.cnblogs.com/Mcoming/p/12103399.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/Mcoming/p/12103399.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!