对django 2.x版本中models.ForeignKey()外键说明介绍


Posted in Python onMarch 30, 2020

下面是代码

class GroupInfos(models.Model):
 uid = models.AutoField(primary_key=True)
 caption = models.CharField(max_length=32, unique=True)
 ctime = models.DateTimeField(auto_now_add=True, null=True)
 uptime = models.DateTimeField(auto_now=True, null=True)

class UserInfos(models.Model):
 username = models.CharField(max_length=32, blank=True, verbose_name='用户名')
 password = models.CharField(max_length=64, help_text='text')
 email = models.EmailField(max_length=60)
 user_group = models.ForeignKey('GroupInfos', to_field='uid', on_delete='CASCADE')

说明

第一个class创建一个名称为app_groupinfos的表

第二个class创建一个名称为app_userinfos的表

1、ForeignKey 表示设置外健

2、to_field表示外健关联的主键

3、on_delete有多个选项

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

TypeError: init() missing 1 required positional argument: ‘on_delete'

举例说明:

user=models.OneToOneField(User)
owner=models.ForeignKey(UserProfile)

需要改成:

user=models.OneToOneField(User,on_delete=models.CASCADE) --在老版本这个参数(models.CASCADE)是默认值
owner=models.ForeignKey(UserProfile,on_delete=models.CASCADE) --在老版本这个参数(models.CASCADE)是默认值

参数说明:

on_delete有CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()五个可选择的值

CASCADE:此值设置,是级联删除。

PROTECT:此值设置,是会报完整性错误。

SET_NULL:此值设置,会把外键设置为null,前提是允许为null。

SET_DEFAULT:此值设置,会把设置为外键的默认值。

SET():此值设置,会调用外面的值,可以是一个函数。

一般情况下使用CASCADE就可以了。

那么,这个时候一个group就会对应多个user,属于一对多的类型。

当我们查询一个组有那些用户的时候,就会用到当前的外健,

创建记录

并且,在class中定义了foreignKey之后,group还不存在的同时,user表也因为约束的原因,不能被进行创建

删除记录

并且,在class中定义了foreignKey之后,user中记录存在的同时,group表中的记录也因为约束的原因,不能被进行删除

补充知识:owner = models.ForeignKey(User)出现TypeError

owner = models.ForeignKey(User)出现错误 TypeError: init() missing 1 required positional argument: ‘on_delete'
owner = models.ForeignKey(User)

出现下列错误:

TypeError: __init__() missing 1 required positional argument: 'on_delete'

解决办法:

owner = models.ForeignKey(User, on_delete=models.CASCADE)

以上这篇对django 2.x版本中models.ForeignKey()外键说明介绍就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中的字典详细介绍
Sep 18 Python
Python实现子类调用父类的方法
Nov 10 Python
python实现决策树ID3算法的示例代码
May 30 Python
浅析python3中的os.path.dirname(__file__)的使用
Aug 30 Python
python 文件查找及内容匹配方法
Oct 25 Python
python画柱状图--不同颜色并显示数值的方法
Dec 13 Python
Python识别快递条形码及Tesseract-OCR使用详解
Jul 15 Python
基于python的itchat库实现微信聊天机器人(推荐)
Oct 29 Python
利用python实现AR教程
Nov 20 Python
将pymysql获取到的数据类型是tuple转化为pandas方式
May 15 Python
python中PyQuery库用法分享
Jan 15 Python
python元组拆包实现方法
Feb 28 Python
Python进程的通信Queue、Pipe实例分析
Mar 30 #Python
基于Django OneToOneField和ForeignKey的区别详解
Mar 30 #Python
django 扩展user用户字段inlines方式
Mar 30 #Python
Python3标准库之threading进程中管理并发操作方法
Mar 30 #Python
解决django xadmin主题不显示和只显示bootstrap2的问题
Mar 30 #Python
Python2 与Python3的版本区别实例分析
Mar 30 #Python
django xadmin中form_layout添加字段显示方式
Mar 30 #Python
You might like
PHP中基本HTTP认证技巧分析
2015/03/16 PHP
PHP实现在线阅读PDF文件的方法
2015/06/23 PHP
PHP实现限制IP访问的方法
2017/04/20 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
分析php://output和php://stdout的区别
2018/05/06 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
解决laravel5中auth用户登录其他页面获取不到登录信息的问题
2019/10/08 PHP
取得窗口大小 兼容所有浏览器的js代码
2011/08/09 Javascript
Jquery EasyUI中弹出确认对话框以及加载效果示例代码
2014/02/13 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
2015/09/26 Javascript
js插件dropload上拉下滑加载数据实例解析
2016/07/27 Javascript
jQuery 生成svg矢量二维码
2016/08/09 Javascript
AngularJS表单和输入验证实例
2016/11/02 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
Three.js入门之hello world以及如何绘制线
2017/09/25 Javascript
vue-cli与webpack处理静态资源的方法及webpack打包的坑
2018/05/15 Javascript
快速解决vue在ios端下点击响应延时的问题
2018/08/27 Javascript
深入了解JavaScript 的 WebAssembly
2019/06/15 Javascript
Nodejs环境实现socket通信过程解析
2020/07/03 NodeJs
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
[01:11:11]Alliance vs RNG 2019国际邀请赛淘汰赛 败者组BO1 8.20.mp4
2020/07/19 DOTA
python插入排序算法的实现代码
2013/11/21 Python
python使用正则表达式检测密码强度源码分享
2014/06/11 Python
python的staticmethod与classmethod实现实例代码
2018/02/11 Python
Python中的元组介绍
2019/01/28 Python
Python应用自动化部署工具Fabric原理及使用解析
2020/11/30 Python
大学生求职简历的自我评价
2013/10/14 职场文书
销售主管的自我评价分享
2014/01/03 职场文书
高校教师思想汇报
2014/01/11 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
服务标兵事迹材料
2014/05/04 职场文书
会议接待欢迎标语
2014/10/08 职场文书
工作后的感想
2015/08/07 职场文书
如何解决flex文本溢出问题小结
2022/07/15 HTML / CSS