Django从理论到实战(part32)--外键删除
学习笔记,仅供参考,有错必纠
参考自:Django打造大型企业官网–Huang Y;
外键删除
在学习外键删除之前,我们先学习一下外键。
外键
比如,我们有一个User
和一个Article
两个模型,User
可以有多个Article
,Article
只能有一个User
,并且通过外键进行引用:
class User(models.Model):username = models.CharField(max_length=20)password = models.CharField(max_length=100)class Article(models.Model):title = models.CharField(max_length=100)content = models.TextField()author = models.ForeignKey("User",on_delete=models.CASCADE)
注意!ForeignKey
类定义为class ForeignKey(to,on_delete,**options)
,第一个参数是指外键关联的模型,第二个参数是指定外键关联的模型数据被删除时,该模型的处理方式。
外键删除操作
如果一个模型使用了外键,那么在关联的那个模型数据被删掉后,该模型中应该采取什么样的操作,这可以通过on_delete
来指定,可以指定的类型如下:
CASCADE
:级联操作。如果外键对应的那条数据被删除了,那么这条数据也会被删除。PROTECT
:受保护。即只要这条数据引用了外键的那条数据,那么就不能删除外键的那条数据。SET_NULL
:设置为空。如果外键的那条数据被删除了,那么在本条数据上就将这个字段设置为空。如果设置这个选项,前提是要指定这个字段可以为空。SET_DEFAULT
:设置默认值。如果外键的那条数据被删除了,那么本条数据上就将这个字段设置为默认值。如果设置这个选项,前提是要指定这个字段一个默认值。SET()
:如果外键的那条数据被删除了。那么将会获取SET
函数中的值来作为这个外键的值。SET
函数可以接收一个可以调用的对象(比如函数或者方法),如果是可以调用的对象,那么会将这个对象调用后的结果作为值返回回去。DO_NOTHING
:不采取任何行为。一切全看数据库级别的约束。
Django从理论到实战(part32)--外键删除相关推荐
- Django从理论到实战(part33)--表关系
学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: 表关系 表与表之间都是通过外键来进行关联的,而表之间的关系,无非就是三种关系:一对一.一对多(多对一).多对多. ...
- 56_Django数据库_ORM外键删除操作详解
1. 级联操作 继续用上一节的项目案例,在article下的views.py文件中更新代码: from django.shortcuts import render from .models impo ...
- mysql多个外键删除设置_Mysql在删除集上使用多个外键创建表
我试图创建一个具有删除/更新约束的多个外键的数据库,但我得到一个错误代码1005与以下sql脚本: CREATE TABLE Worker ( WorkerID smallint auto_incre ...
- MySQL外键删除干净
#先删外键 ALTER TABLE borrow DROP FOREIGN KEY FK_rid; #再删除外键的索引 ALTER TABLE borrow DROP KEY FK_rid; 要有这两 ...
- 关于 SQL 外键删除的问题
今天突然要用到这个东西,这里就说明一下这个问题,怎么删除sql 数据库中的外键 step 1:查询外键名: --2000 exec sp_helpconstraint 'test2' --可以在con ...
- Mysql报错1091解决办法_关于MYSQL:外键删除后,查询表发现外键依旧存在,再删一次会报错:原因及相关解决办法...
1.创建表test6:外键名为test3_fk mysql> create table test6( -> id int, -> test_name varchar(32), -&g ...
- Django从理论到实战(part41)--WSGIRequest对象
学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: 文章目录 WSGIRequest对象 WSGIRequest对象常用属性 WSGIRequest对象常用方法 WS ...
- Django从理论到实战(part30)--Meta配置
学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列 ...
- Django从理论到实战(part28)--ORM常用Field详解
学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: ORM常用Field详解 AutoField 映射到数据库中是int类型,可以有自动增长的特性.一般不需要使用这个类型,如果 ...
最新文章
- jQuery源码学习
- docker启动sqlserver_ASP.NET Core容器化技术Docker零基础从入门到实战演练
- 纪念第一次青海湖之行泡汤
- C++ std::condition_variable wait() wait_for() 区别
- 基础命令之cd,mkdir,cp,ls
- 嵌套函数中的this指向的对象
- Crystal Reports第一张报表
- php5.5开发环境配置,windows下配置php5.5开发环境及开发扩展
- Silverlight(CodeNameWPF/E) Features一览表
- 一个文科小白的数据分析师之路
- 吉林大学计算机专业张文政,张晋东 - 吉林大学 - 计算机科学与技术学院
- android ndk 架构,NDK需要特别注意的armeabi等架构问题
- 【排队模型】基于粒子群优化核酸检测排队问题附matlab代码
- 华为面试题之洞穴逃生
- 电信光猫找不到服务器,高手说说电信光猫没网如何设置?
- ORR和BIC伪指令应用
- 第一章 计算机体系结构(一)— 体系结构分类
- 柔性电子:大面积全纺织压力传感器用于检测人类移动和物理信号
- DQN、DDQN、Dueling DQN、PER DQN
- 狂神学习系列11:SpringBoot