首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TypeError:__init__()缺少1个必需的位置参数:'on_delete‘(Django 2)

TypeError:init()缺少1个必需的位置参数:'on_delete' (Django 2)

这个错误是在Django 2版本中出现的,它表示在定义模型的关联字段时缺少了必需的位置参数'on_delete'。在Django 2及以上版本中,所有的关联字段(ForeignKey、OneToOneField等)都必须指定'on_delete'参数,用于指定当关联的对象被删除时的行为。

'on_delete'参数有多种可选值,用于定义删除关联对象时的行为,包括:

  1. CASCADE:级联删除,删除关联对象时,同时删除所有依赖于它的对象。
  2. PROTECT:保护模式,阻止删除关联对象,抛出ProtectedError异常。
  3. SET_NULL:设置为NULL,删除关联对象时,将关联字段设置为NULL(前提是该字段允许为NULL)。
  4. SET_DEFAULT:设置为默认值,删除关联对象时,将关联字段设置为默认值。
  5. SET():设置为指定值,删除关联对象时,将关联字段设置为指定的值。
  6. DO_NOTHING:什么都不做,删除关联对象时,不进行任何操作。

正确的使用示例:

代码语言:txt
复制
from django.db import models

class MyModel(models.Model):
    related_model = models.ForeignKey(RelatedModel, on_delete=models.CASCADE)

在这个示例中,'on_delete=models.CASCADE'表示当关联的RelatedModel对象被删除时,同时删除所有依赖于它的MyModel对象。

推荐的腾讯云相关产品和产品介绍链接地址:

腾讯云提供了丰富的云计算产品和服务,包括计算、存储、数据库、网络、安全等方面。以下是一些相关产品和介绍链接:

  1. 云服务器(CVM):提供弹性、安全、稳定的云服务器实例,满足各种计算需求。详情请参考:腾讯云云服务器
  2. 云数据库MySQL版:提供高性能、可扩展的云数据库服务,适用于各种规模的应用。详情请参考:腾讯云云数据库MySQL版
  3. 云存储COS:提供安全、稳定、低成本的对象存储服务,适用于存储和处理各种类型的数据。详情请参考:腾讯云云存储COS
  4. 人工智能平台(AI Lab):提供丰富的人工智能服务和工具,包括图像识别、语音识别、自然语言处理等。详情请参考:腾讯云人工智能平台

请注意,以上链接仅供参考,具体产品和服务选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

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

表示外健关联主键 3、on_delete有多个选项 在django2.0后,定义外键和一对一关系时候需要加on_delete选项,此参数为了避免两个表里数据不一致问题,不然会报错: TypeError...(models.CASCADE)是默认值 参数说明: on_delete有CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()五个可选择值 CASCADE:此值设置...: ‘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()外键说明介绍就是小编分享给大家全部内容了,希望能给大家一个参考。

1.1K20

完美解决Django2.0中models下ForeignKey()问题

Django2.0中编写models类下ForeignKey book = models.ForeignKey(‘BookInfo’) django2.0与之前1.8不同, 错误: book...= models.ForeignKey(‘BookInfo’) TypeError: __init__() missing 1 required positional argument: ‘on_delete...’ 解决方法: book = models.ForeignKey(‘BookInfo’, on_delete=models.CASCADE,) 加上on_delete参数就可以了!!!...补充知识:Django ForeignKey ondelete CASCADE:删除一并删除关联表下所有的信息; PROTECT:删除信息时,采取保护机制,抛出错误:即不删除关联表内容; SET_NULL...以上这篇完美解决Django2.0中models下ForeignKey()问题就是小编分享给大家全部内容了,希望能给大家一个参考。

77910

Django项目中xadmin遇到坑记录

第一次写Django项目,使用xadmin报了一大堆错误,此次记录一下问题和方法方便下次使用 xadmin下载: 在百度中搜索GitHub,进入官网,然后搜索xadmin即可 image.png 1、...named ‘django.core.urlresolvers’ 解决方法:   把原来 django.core.urlresolvers   更改为了 django.urls 3、错误提示:ImportError...python_2_unicode_compatible       改成 from six import python_2_unicode_compatible 5、错误提示:TypeError: _...import LogoutView as logout 8、错误提示:TypeError: __init__() missing 1 required positional argument: 'on_delete...' 解决方法:   关联关系ForeignKey引发错误,凡是出现关联关系字段地方全部加上 on_delete=models.CASCADE 9、错误提示:AttributeError: 'Settings

94222

博客将 Django 1.11+ 升级到 Django 2.2+ 遇到问题及规避方法

之前就有人一直催我把博客 Django 升级到 Django 2.0 以上,但是我一直懒得升级,因为我早就看过 Django 2.x 版本和 1.11.x 版本,其实没有太多不同,所以没有找到需要升级必要...: __init__() missing 1 required positional argument: 'on_delete' 报错原因其实一看就能知道,这个地方是说关于一些模型在一对一关联和一对多关联...(外键)时候需要指定 on_delete 参数才行,多对多没有这个设置。...因为在 Django 1.x 版本中,这个参数是有默认值,但是 Django 2.x 没有指定,所以需要显示设定一个值。...报错分析,这个是 django 2.x 里面会出现问题,当 urls.py 里面使用 include 时候,当有 namespace 参数时候,第一个参数需要添加成元组,其中第二个参数是 app_name

92320

【已解决】Python解决TypeError: __init__() missing 1 required positional argument: ‘comment‘报错

)缺少了一个必需位置参数comment。...# 缺少必需参数 new_comment = Comment() # 引发TypeError self代表实例化对象本身 ①、类方法内部调用其他方法时,我们也需要用到 self 来代表实例 ②...__init__() # 没有传递必需参数给Base构造函数 # 引发TypeError new_derived = Derived() 原因三:错误参数顺序 如果构造函数参数顺序与调用时提供不一致..., "Alice") # 引发TypeError,如果定义中author在comment之前 三、解决方案 方案一:确保构造函数参数完整 在创建类实例时,确保提供所有必需参数。...# 正确提供必需参数 方案二:正确处理类继承 如果类继承自另一个类,确保在子类构造函数中正确传递所有必需参数给父类构造函数。

19410

django数据库迁移时候异常

django数据库迁移时候异常 一.错误信息 Django在根据models生成数据库表时报 init() missing 1 required positional argument: 'on_delete...' 二.原因 在django2.0后,定义外键和一对一关系时候需要加on_delete选项,此参数为了避免两个表里数据不一致问题,不然会报错: TypeError: init() missing...=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:此值设置,是级联删除。

48520

Django 学习笔记 | 2、模型

框架, 所以不需要直接面向数据库编程 而是定义模型类, 通过模型类和对象完成数据库表增删改查 ORM框架就是把数据库表行与相应对象建立关联, 互相转换.使得数据库操作面向对象 使用Django进行数据库开发步骤...Traceback (most recent call last): File "manage.py", line 21, in main() ………内容太多,此处省略……… TypeError...: __init__() missing 1 required positional argument: 'on_delete' 在运行第一个命令时候报错了,此时只需要修改定义外键那行代码即可。...# 原来 book = models.ForeignKey(BookInfo) #修改后 book = models.ForeignKey(BookInfo,on_delete=models.CASCADE...) 发生这个错误原因是由于我看教程使用是1.8版本Django,而我安装是3.0,Django在2.0版本后,如果定义外键就需要加上on_delete选项了,OK,接下来,继续运行这两个代码。

59710

django自定义非主键自增字段类型详解(auto increment field)

1.django自定义字段类型,实现非主键字段自增 # -*- encoding: utf-8 -*- from django.db.models.fields import Field, IntegerField...def to_python(self, value): if value is None: return value try: return int(value) except (TypeError...) to, # 要进行关联表名 to_field=None, # 要关联表中字段名称 on_delete=None, # 当删除关联表中数据时,当前表与其关联行为 - models.CASCADE...( to="User", to_field="id" on_delete=models.SET(func),) related_name=None, # 反向操作时,使用字段名,用于代替 【表名_set...to_field=None # 要关联表中字段名称 on_delete=None, # 当删除关联表中数据时,当前表与其关联行为 ###### 对于一对一 ###### # 1.

2.2K10

【Python】已解决报错 TypeError: Missing 1 Required Positional Argument

特别地,TypeError: Missing 1 Required Positional Argument这个错误表明函数调用缺少了一个必需位置参数。...1) # 正确 print_coordinates(1, 2) # 引发TypeError,因为期望顺序是先x后y 原因三:函数重载误解 Python不支持函数重载,即不能根据参数数量或类型重载同一个函数名...greet() # 引发TypeError,因为缺少必需位置参数 原因四:默认参数使用不当 def log(message, level="INFO"): print(f"[{level}...] {message}") # 错误地调用函数,没有提供任何参数 log() # 引发TypeError,因为level参数虽然有默认值,但message是必需 三、解决方案汇总 明确参数要求:在调用函数之前...# 正确,提供了所有必需参数 log("System is running smoothly", "DEBUG") # 正确,提供了所有必需参数

83910

Django 系列博客(十三)

Django 系列博客(十三) 前言 本篇博客介绍 Django常用字段和参数。 ORM 字段 AutoField int 自增列,必须填入参数 primary_key=True。...Field) - 字符串,Django Admin以及ModelForm中提供读取文件夹下文件功能 - 参数: path, 文件夹路径 match = None, 正则匹配 recursive = False...(FileField) - 字符串,路径保存在数据库,文件上传到指定目录 - 参数: upload_to = "" 上传文件保存路径 storage = None 存储组件,默认django.core.files.storage.FileSystemStorage...on_delete 级联删除选项 ManyToManyField 用于表示多对多关联关系。在数据库中通过第三张表来建立关联关系。...自定义字段 class FixedCharField(models.Field): """ 自定义char类型字段类 """ def __init__(self, max_length

1.1K30

python 实现多继承

: __init__() takes 4 positional arguments but 5 were given 您会收到一个TypeError异常,该异常表示应有4个位置参数,但给出了5个 这是因为您首先从秘书中派生了...__init__(id, name) TypeError: __init__() missing 1 required positional argument: 'weekly_salary' 现在看来...,您缺少了一个周秘书参数,该参数对于初始化局长是必需,但是在TemporarySecretary上下文中该参数没有意义,因为它是HourlyEmployee 也许实现TemporarySecretary...__init__(id, name) TypeError: __init__() missing 1 required positional argument: 'weekly_salary' 这也不管用...秘书.__ init __(),它继承自SalaryEmployee .__ init __(self,id,name,weekly_salary) 由于参数不匹配,因此引发TypeError异常 您可以通过反转继承顺序并直接调用

64510
领券