博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Django - TypeError: __init__() missing 1 required positional argument: ‘on_delete‘ 的解决办法
阅读量:4049 次
发布时间:2019-05-25

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

 

 

Django 中创建Model时报以下错误:

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

代码如下:

from django.db import models# Create your models here.class Contract(models.Model):    nid   = models.AutoField(primary_key=True)    name  = models.CharField(max_length=120)    price = models.DecimalField(max_digits=9, decimal_places=2, default=0)class Project(models.Model):    nid   = models.AutoField(primary_key=True)    name  = models.CharField(max_length=120)    price = models.DecimalField(max_digits=9, decimal_places=2, default=0)    # 与Contract建立一对多的关系    contract = models.ForeignKey(Contract)

当执行 python  makemigrations 出现错误:TypeError: init() missing 1 required positional argument: ‘on_delete’

解决方案:

定义外键的时候需要加上 on_delete=;

即:contract = models.ForeignKey(Contract, on_delete=models.CASCADE)

原因如下:

django 升级到2.0之后,表与表之间关联的时候,必须要写on_delete参数,否则会报异常:

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

on_delete各个参数的含义如下:

on_delete=None,               # 删除关联表中的数据时,当前表与其关联的field的行为	on_delete=models.CASCADE,     # 删除关联数据,与之关联也删除	on_delete=models.DO_NOTHING,  # 删除关联数据,什么也不做	on_delete=models.PROTECT,     # 删除关联数据,引发错误ProtectedError	# models.ForeignKey('关联表', on_delete=models.SET_NULL, blank=True, null=True)	on_delete=models.SET_NULL,    # 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空,一对一同理)	# models.ForeignKey('关联表', on_delete=models.SET_DEFAULT, default='默认值')	on_delete=models.SET_DEFAULT, # 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值,一对一同理)	on_delete=models.SET,         # 删除关联数据,	 a. 与之关联的值设置为指定值,设置:models.SET(值)	 b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象

 由于多对多(ManyToManyField)没有 on_delete 参数,所以以上只针对外键(ForeignKey)和一对一(OneToOneField)

 

 

 

 

 

转载地址:http://olnci.baihongyu.com/

你可能感兴趣的文章
S3C2440中对LED驱动电路的理解
查看>>
《天亮了》韩红
查看>>
Windows CE下USB摄像头驱动开发(以OV511为例,附带全部源代码以及讲解) [转]
查看>>
出现( linker command failed with exit code 1)错误总结
查看>>
iOS开发中一些常见的并行处理
查看>>
iOS获取手机的Mac地址
查看>>
ios7.1发布企业证书测试包的问题
查看>>
如何自定义iOS中的控件
查看>>
iOS 开发百问
查看>>
Mac环境下svn的使用
查看>>
github简单使用教程
查看>>
如何高效利用GitHub
查看>>
新手看过来:VC对话框控件属性的修改
查看>>
实现MAVROS与px4的自定义通讯功能(一)
查看>>
BUUCTF笔记之Web系列部分WriteUp(四)
查看>>
使用fastcoll生成字符串MD5碰撞
查看>>
2021GKCTF X DASCTF应急挑战杯部分Writeup
查看>>
图像量化函数
查看>>
Linux 服务器上搭建SVN服务端
查看>>
每天学一点python——GUI遍历文件夹
查看>>