学习笔记,仅供参考,有错必纠
参考自:Django打造大型企业官网–Huang Y;


外键删除

在学习外键删除之前,我们先学习一下外键

外键

比如,我们有一个User和一个Article两个模型,User可以有多个ArticleArticle只能有一个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来指定,可以指定的类型如下:

  1. CASCADE:级联操作。如果外键对应的那条数据被删除了,那么这条数据也会被删除。
  2. PROTECT:受保护。即只要这条数据引用了外键的那条数据,那么就不能删除外键的那条数据。
  3. SET_NULL:设置为空。如果外键的那条数据被删除了,那么在本条数据上就将这个字段设置为空。如果设置这个选项,前提是要指定这个字段可以为空。
  4. SET_DEFAULT:设置默认值。如果外键的那条数据被删除了,那么本条数据上就将这个字段设置为默认值。如果设置这个选项,前提是要指定这个字段一个默认值。
  5. SET():如果外键的那条数据被删除了。那么将会获取SET函数中的值来作为这个外键的值。SET函数可以接收一个可以调用的对象(比如函数或者方法),如果是可以调用的对象,那么会将这个对象调用后的结果作为值返回回去。
  6. DO_NOTHING:不采取任何行为。一切全看数据库级别的约束。

Django从理论到实战(part32)--外键删除相关推荐

  1. Django从理论到实战(part33)--表关系

    学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: 表关系 表与表之间都是通过外键来进行关联的,而表之间的关系,无非就是三种关系:一对一.一对多(多对一).多对多. ...

  2. 56_Django数据库_ORM外键删除操作详解

    1. 级联操作 继续用上一节的项目案例,在article下的views.py文件中更新代码: from django.shortcuts import render from .models impo ...

  3. mysql多个外键删除设置_Mysql在删除集上使用多个外键创建表

    我试图创建一个具有删除/更新约束的多个外键的数据库,但我得到一个错误代码1005与以下sql脚本: CREATE TABLE Worker ( WorkerID smallint auto_incre ...

  4. MySQL外键删除干净

    #先删外键 ALTER TABLE borrow DROP FOREIGN KEY FK_rid; #再删除外键的索引 ALTER TABLE borrow DROP KEY FK_rid; 要有这两 ...

  5. 关于 SQL 外键删除的问题

    今天突然要用到这个东西,这里就说明一下这个问题,怎么删除sql 数据库中的外键 step 1:查询外键名: --2000 exec sp_helpconstraint 'test2' --可以在con ...

  6. Mysql报错1091解决办法_关于MYSQL:外键删除后,查询表发现外键依旧存在,再删一次会报错:原因及相关解决办法...

    1.创建表test6:外键名为test3_fk mysql> create table test6( -> id int, -> test_name varchar(32), -&g ...

  7. Django从理论到实战(part41)--WSGIRequest对象

    学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y: 文章目录 WSGIRequest对象 WSGIRequest对象常用属性 WSGIRequest对象常用方法 WS ...

  8. Django从理论到实战(part30)--Meta配置

    学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: 本系列Blog以应用为主,理论基础部分我在后端专栏的Django系列博客已经写过了,如果有些需要补充的知识点,我会在这个系列 ...

  9. Django从理论到实战(part28)--ORM常用Field详解

    学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: ORM常用Field详解 AutoField 映射到数据库中是int类型,可以有自动增长的特性.一般不需要使用这个类型,如果 ...

最新文章

  1. jQuery源码学习
  2. docker启动sqlserver_ASP.NET Core容器化技术Docker零基础从入门到实战演练
  3. 纪念第一次青海湖之行泡汤
  4. C++ std::condition_variable wait() wait_for() 区别
  5. 基础命令之cd,mkdir,cp,ls
  6. 嵌套函数中的this指向的对象
  7. Crystal Reports第一张报表
  8. php5.5开发环境配置,windows下配置php5.5开发环境及开发扩展
  9. Silverlight(CodeNameWPF/E) Features一览表
  10. 一个文科小白的数据分析师之路
  11. 吉林大学计算机专业张文政,张晋东 - 吉林大学 - 计算机科学与技术学院
  12. android ndk 架构,NDK需要特别注意的armeabi等架构问题
  13. 【排队模型】基于粒子群优化核酸检测排队问题附matlab代码
  14. 华为面试题之洞穴逃生
  15. 电信光猫找不到服务器,高手说说电信光猫没网如何设置?
  16. ORR和BIC伪指令应用
  17. 第一章 计算机体系结构(一)— 体系结构分类
  18. 柔性电子:大面积全纺织压力传感器用于检测人类移动和物理信号
  19. DQN、DDQN、Dueling DQN、PER DQN
  20. 狂神学习系列11:SpringBoot

热门文章

  1. mysql中的extract()函数
  2. C/C++ 动态存储分配 malloc calloc realloc函数的用法与区别
  3. SqlServer性能检测和优化工具使用详细
  4. weblogic 8.1 安装并配置数据源
  5. 字节对齐《c和指针》笔记--包含位域结构体的内存对齐(32bit,GCC)
  6. webview与android java交互
  7. 3G时代手机网站的特点和开发原则
  8. 利用脚本批量添加域用户账户
  9. Mysql(Mariadb)数据库主从复制
  10. docker安装教程-centos