当你在Django中删除了一个有着外键关联的数据时,比如一个作者和他名下的所有的书的信息,书的外键是作者(一个作者可有好多本书),当你把作者的信息从数据库中删除时,Django提供了一下几个参数来对作者的书的数据进行操作

外键的定义:

#models.py
class Author(models.Model):
    author = models.CharField(max_length=250)
 
class Books(models.Model):
    book = models.ForeignKey(Author,on_delete=models.CASCADE)

CASCADE:删除作者信息一并删除作者名下的所有书的信息;
PROTECT:删除作者的信息时,采取保护机制,抛出错误:即不删除Books的内容;
SET_NULL:只有当null=True才将关联的内容置空;
SET_DEFAULT:设置为默认值;
SET( ):括号里可以是函数,设置为自己定义的东西;
DO_NOTHING:字面的意思,啥也不干,你删除你的干我毛线关系

Django 外键ForeignKey中的on_delete的更多相关文章

  1. Mysql外键设置中的CASCADE、NO ACTION、RESTRICT、SET NULL

    转: Mysql外键设置中的CASCADE.NO ACTION.RESTRICT.SET NULL 2017年06月11日 10:03:13 雅静8 阅读数:5491   版权声明:本文为博主原创文章 ...

  2. django 笔记5 外键 ForeignKey

    class UsserGroup(models.Model): uid = models.AutoField(primary_key=True) caption = models.CharField( ...

  3. python_19(Django外键)

    第1章 Django ORM相关操作 1.1 在一个py文件中使用django项目 1.2 返回QuerySet对象的方法有 1.2.1 特殊的QuerySet 1.3 返回具体对象的 1.4 返回布 ...

  4. django外键以及主表和子表的相互查询

    Django的外键使用 from django.db import models # Create your models here. class Category(models.Model): na ...

  5. django 外键操作

    下面定义两个模型,一个主表,一个字表. 举例说明: 如何通过主表对象找到对应的子表对象? 如何通过子表对象找到对应的主表对象? class Person(models.Model); name = m ...

  6. Django2.0里model外键和一对一的on_delete参数

    在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错: TypeError: __init__() missing 1 r ...

  7. django 外键 ,django __

    data sqlite> select * from author; id name age 1 jim 12 2 tom 11 sqlite> select * from book; i ...

  8. Django外键关系:一对一、一对多,多对多

    1. 一对多 model.py class UserTest(models.Model): name = models.CharField(max_length = 16 ) sex = models ...

  9. Django 外键、多对多插入数据方法

    models.py class UserInfo(models.Model): username = models.CharField(max_length=64,db_column='usernam ...

随机推荐

  1. Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)——无非是在传统遍历过程中修改叶子结点加入后继结点信息(传统是stack记录),然后再删除恢复

    先看看线索二叉树 n个结点的二叉链表中含有n+1(2n-(n-1)=n+1)个空指针域.利用二叉链表中的空指针域,存放指向结点在某种遍历次序下的前驱和后继结点的指针(这种附加的指针称为"线索 ...

  2. Oracle第三方ado.net数据提供程序(转)

    原文地址:http://www.infoq.com/cn/news/2009/06/oracleclient_deprecated 这项决定有部分原因是基于目前Oracle的第三方ADO.NET数据提 ...

  3. Integer和int的区别(转)

    public class TestInteger { public static void main(String[] args) { int i = 128; Integer i2 = 128; I ...

  4. CodeForces 722A Broken Clock (水题)

    题意:给定一个时间,然后改最少的数字,使得它成为12进制或者24进制. 析:24进制主要判是不是大于23,如果是把第一位变成0,12进制判是不是大于12,如果是再看第二位是不是0,是0,第一位变成1, ...

  5. SpringBoot项目以服务器方式启动

    SpringBoot项目,如果未引入Web相关依赖,不会以服务器方式进行启动,会以应用的方式启动并结束 <dependency> <groupId>org.springfram ...

  6. Ruby Proc类

    Proc类  生成  Proc.new() {...}  proc {...}    注,代码块参数带用  |..., *array| 获得后续参数的数组  lamda {...}  call呼出时会 ...

  7. js 几秒之后就不断的执行

     function url()    { $.ajax({            url: "AA.ashx",            data: { ID: "gggg ...

  8. 基于.Net Core的API框架的搭建(1)

    目标 我们的目标是要搭建一个API控制器的项目,API控制器提供业务服务. 一.开发框架搭建 1.开发前准备 开发前,我们需要下载如下软件,安装过程略: (1) 开发工具:VS2017 (2) 数据库 ...

  9. python中threading中的lock类

    虽然线程可以在程序的执行过程中提高程序的运行效率,但是其带来的影响却难以忽略. Lock类是threading中用于锁定当前线程的锁定类.顾名思义,其作用是对当前运行中的线程进行锁定,只有当前线程被释 ...

  10. 洛谷P2384 最短路(dijkstra解法)

    题目背景 狗哥做烂了最短路,突然机智的考了Bosh一道,没想到把Bosh考住了...你能帮Bosh解决吗? 他会给你100000000000000000000000000000000000%10金币w ...