Web后端:Django的models.py中on_delete=models.CASCADE的作用
细读Django官方文档是浑然不知“on_delete=models.CASCADE”是干啥用的。于是查了查..
运行环境 Runtime environment
1 | 操作系统 : Ubuntu18.04 |
背景
今日想设计一下小说网站的数据库,并通过django的models模块来实现,
练习Django中的一对多关系,使用Foreign关键字创建多对一的关系,Foreign(外键所在类对象的名字)
在翻读查阅Django官方文档是浑然不知“on_delete=models.CASCADE”是干啥用的。
以前似乎没注意用过这个东西,于是简单的去了解一下。
on_delete=models.CASCADE级联删除
比如:书籍和作者的关系
1 | # 作者 |
第一次创建的时候,在Book类的the_writer字段的第二个参数我没有添加on_delete=models.CASCADE,在使用python manage.py makeigrations 进行迁移的时候的出错了。
报错信息为:
TypeError: init() missing 1 required positional argument:”on_delete”
之后加上“on_delete=models.CASCADE”来解决问题。
1 | # 作者 |
经过筛查,在创建多对一的关系的,需要在Foreign的第二参数中加入on_delete=models.CASCADE 主外关系键中,级联删除,也就是当删除主表的数据时候从表中的数据也随着一起删除。
详细文档,可以访问官方文档进行了解
https://docs.djangoproject.com/zh-hans/2.1/topics/db/models/
总结
简单话来讲,Django中使用models处理多对一(“书多对作者一”)的情况时,on_delete=models.CASCADE是必须加上的。而当删除“作者”的时候,相应他的“书籍”也会一起连带删除!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 快乐咸鱼のRaXianch窝!
评论
WalineValine