对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 logging日志模块的详解
Oct 29 Python
Python Scapy随心所欲研究TCP协议栈
Nov 20 Python
VSCode Python开发环境配置的详细步骤
Feb 22 Python
Python中的random.uniform()函数教程与实例解析
Mar 02 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
May 07 Python
新手学习Python2和Python3中print不同的用法
Jun 09 Python
Pytorch上下采样函数--interpolate用法
Jul 07 Python
scrapy中如何设置应用cookies的方法(3种)
Sep 22 Python
改变 Python 中线程执行顺序的方法
Sep 24 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
Dec 03 Python
使用python+pygame开发消消乐游戏附完整源码
Jun 10 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定义函数代码
2015/02/26 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
Composer设置忽略版本匹配的方法
2016/04/27 PHP
再谈PHP中单双引号的区别详解
2016/06/12 PHP
PHP 中常量的知识整理
2017/04/14 PHP
laravel通过a标签从视图向控制器实现传值
2019/10/15 PHP
js跑马灯代码(自写)
2013/04/17 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
Easyui form combobox省市区三级联动
2016/01/13 Javascript
原生JavaScript编写canvas版的连连看游戏
2016/05/29 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
使用bootstrap插件实现模态框效果
2017/05/10 Javascript
js自定义弹框插件的封装
2020/08/24 Javascript
jQuery:unbind方法的使用详解
2017/08/14 jQuery
JS实现table表格固定表头且表头随横向滚动而滚动
2017/10/26 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
Python外星人入侵游戏编程完整版
2020/03/30 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
Python干货:分享Python绘制六种可视化图表
2018/08/27 Python
详解如何在Apache中运行Python WSGI应用
2019/01/02 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
2019/04/04 Python
Python如何使用PIL Image制作GIF图片
2020/05/16 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
canvas版人体时钟的实现示例
2021/01/29 HTML / CSS
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
欧洲领先的技术商店:eibmarkt.com
2019/05/10 全球购物
五年级语文教学反思
2014/01/30 职场文书
校园十大歌手策划书
2014/02/01 职场文书
经销商订货会主持词
2014/03/27 职场文书
网页美工求职信范文
2014/04/17 职场文书
大学生团员个人总结
2015/02/14 职场文书
《草虫的村落》教学反思
2016/02/20 职场文书
解决Pytorch中关于model.eval的问题
2021/05/22 Python
详解Mysql事务并发(脏读、不可重复读、幻读)
2022/04/29 MySQL