博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python django中的orm外键级联删除
阅读量:6739 次
发布时间:2019-06-25

本文共 721 字,大约阅读时间需要 2 分钟。

 

今天添加了一个路由表,路由表做外键,然后添加了几个组,路由表为组的外键,当我使用删除功能对路由表进行删除时,竞然将我的组也相当的删除了;尽管这是测试,但放到生产环境中还是会发生意外的;这个问题要解决;

在网上查了一下资料,问题主要是django orm的field字段有关;

routemgr = models.ForeignKey('Routemgr',default=1,blank=True,null=True,on_delete=models.SET_NULL)

主要意思就是把Routemgr这个ForeignKey的字段设置为null 并使用 python manage.py makemigrations 与 python manage.py migrate 进行数据迁移;这样设置成功后再删除就只是把routemgr对应的字段删除而不是它所关联的整个实体了;

 

关于ForeignKey.on_delete的几个选项;

当一个model对象的ForeignKey关联的对象被删除时,默认情况下此对象也会一起被级联删除的。

CASCADE:默认值,model对象会和ForeignKey关联对象一起被删除

SET_NULL:将model对象的ForeignKey字段设为null。当然需要将null设为True。

SET_DEFAULT:将model对象的ForeignKey字段设为默认值。

Protect:删除ForeignKey关联对象时会生成一个ProtectedError,这样ForeignKey关联对象就不会被删除了。

 

转载于:https://www.cnblogs.com/hsggj/p/9042468.html

你可能感兴趣的文章
配置DHCP服务器
查看>>
trim triml trimr
查看>>
我的友情链接
查看>>
Linux:chattr命令和chgrp命令
查看>>
service redis does not support chkconfig
查看>>
Emacs配置
查看>>
闲看花开花落,云卷云舒
查看>>
Swift Basic
查看>>
C语言强大的宏定义
查看>>
微信小程序
查看>>
Linux下搭建SVN服务器遇到的问题及解决方法
查看>>
Android Studio-Gradle项目中添加JNI生成文件(.so文件)
查看>>
IBM在加拿大投资9000万美元组建智能数据中心
查看>>
Perl获取机器hostname,ip(跨平台)
查看>>
iptables的基本语法格式
查看>>
Http协议和IO模型
查看>>
【数据结构】将一组数据升序排序(利用堆排序)
查看>>
linux中用户,组管理
查看>>
用什么开发软件
查看>>
makefile(07)_路径搜索
查看>>