Django2.0在根据models生成数据库表时报 __init__() missing 1 required positional argument: 'on_delete'

1、产生原因:在创建外键后,执行 python manage.py makemigrations报错,具体代码为:

from django.db import models

class Classes(models.Model):

    title = models.CharField(max_length=32)
    m = models.ManyToManyField("Teachers")

class Teachers(models.Model):

    name = models.CharField(max_length=32)

class Student(models.Model):
    username = models.CharField(max_length=32)
    age = models.IntegerField()
    gender = models.BooleanField()
    cs =  models.ForeignKey("Classes")

2、终端上显示报错为:

D:\pythonstudy\Django_demo>python manage.py makemigrations
Traceback (most recent call last):
  File "manage.py", line 15, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Users\huiYan\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\management\__init__.py", line 371, in execute_from_command_line
    utility.execute()
  File "C:\Users\huiYan\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\core\management\__init__.py", line 347, in execute
    django.setup()
  File "C:\Users\huiYan\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Users\huiYan\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\apps\registry.py", line 112, in populate
    app_config.import_models()
  File "C:\Users\huiYan\AppData\Local\Programs\Python\Python36-32\lib\site-packages\django\apps\config.py", line 198, in import_models
    self.models_module = import_module(models_module_name)
  File "C:\Users\huiYan\AppData\Local\Programs\Python\Python36-32\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 655, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 205, in _call_with_frames_removed
  File "D:\pythonstudy\Django_demo\app01\models.py", line 18, in <module>
    class Student(models.Model):
  File "D:\pythonstudy\Django_demo\app01\models.py", line 22, in Student
    cs = models.ForeignKey("Classes")
TypeError: __init__() missing 1 required positional argument: ‘on_delete‘

3、解决方法:

在外键上后面添加on_delete=models.CASCADE,错误消失。

  cs = models.ForeignKey("Classes",on_delete=models.CASCADE,)

Django2.0在根据models生成数据库表时报 __init__() missing 1 required positional argument: 'on_delete'

原文地址:https://www.cnblogs.com/crazyforever/p/9068462.html

时间: 2024-10-10 22:55:33

Django2.0在根据models生成数据库表时报 __init__() missing 1 required positional argument: 'on_delete'的相关文章

Django2.1在根据models生成数据库表时报 __init__() missing 1 required positional argument: &#39;on_delete&#39;

解决办法: a=models.ForeignKey('BookInfo',on_delete=models.CASCADE,) 即在外键值的后面加上 on_delete=models.CASCADE 原因: 在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错:TypeError: __init__() missing 1 required positional argument: 'on_delete'举例说明:us

Django在根据models生成数据库表时报 __init__() missing 1 required positional argument: &#39;on_delete&#39;

code: 1 #encoding=utf-8 2 from django.db import models 3 # Create your models here. 4 class BookInfo(models.Model): #创建书本信息类,继承models.Model 5 booktitle=models.CharField(max_length=20) 6 bookdata=models.DateField() 7 class HeroInfo(models.Model): #创建英

【python3】 django2.0 在生成数据库表时报错: TypeError: __init__() missing 1 required positional argument: &#39;on_delete&#39;

python: 3.6.4 django: 2.0 models.py 代码如下 # coding: utf-8 from django.db import models from django.contrib.auth.models import User # Create your models here. class Category(models.Model): name = models.CharField(max_length=100) class Tag(models.Model)

Django在使用models生成数据库表时报错: __init__() missing 1 required positional argument: &#39;on_delete&#39;

Django 提供完善的模型(model)层主要用来创建和存取数据,不需要我们直接对数据库操作.Django 模型基础知识: 1.每个模型是一个 Python 类,继承 django.db.models.model 类. 2.该模型的每个属性表示一个数据库表字段. 程序代码如下: # 创建应用程序数据表模型(对应数据库的相关操作) from django.db import models # 导入models模块 class Event(models.Model): # 创建Event类,继承m

【工具篇】利用DBExportDoc V1.0 For MySQL自动生成数据库表结构文档

对于DBA或开发来说,如何规范化你的数据库表结构文档是灰常之重要的一件事情.但是当你的库,你的表排山倒海滴多的时候,你就会很头疼了. 推荐一款工具DBExportDoc V1.0 For MySQL(MySQL数据库表结构导出器). 介绍: DBExportDoc V1.0 For MySQL是一款利用office特性VBA开发的小工具,利用此工具可以将本机MySQL上任意数据库.任意表的数据结构导出.但是它不是一款你安装是一路next到finish就可以立刻使用的. 要注意的有两点: 首先,你

Django2.0在models创建数据表时报错

Django2.0在models创建数据表时报错TypeError: __init__() missing 1 required positional argument: 'on_delete' 如下创建了两个表,Tag 表以 Contact 表为外部键,此时可以看到pycharm控制台报错 123456789101112131415 class (models.Model): name = models.CharField(max_length=200) age = models.Intege

PowerDesigner生成数据库表和逆向生成表结构(MySQL数据库)

一.Download Connector/ODBC下载ODBC驱动,地址:https://dev.mysql.com/downloads/connector/odbc/, 需要注意:PowerDesigner安装的多少位就下载多少位的,一般是32位,建议下载.msi文件直接安装. 二.安装完成后点击powerdesigner的Database--->Configure Connections...--->添加数据源配置,如下图: 三.PDM模型生成数据库sql文件,点击powerdesigne

数据类与生成数据库表所需组成

Entityframework属于ORM框架,作用为:将数据类与数据库表关联起来. 数据类与生成数据库表所需组成: 普通类(实体类):定义了属性字段+限制 数据上下文类:继承了DbContext,(各实体类的集合).作用:生成数据库和操作数据库. 配置文件中.连接数据库的字符串.注意name必须与数据上下文类的派生类名称相同. 控制器中,数据库上下文类的实例化,然后使用给对象方可生成数据库.

hibernate 自动生成数据库表

只要在hibernate.cfg.xml添加这句话,就可以自动生成数据表 <property name="hibernate.hbm2ddl.auto">update</property> update:表示自动根据model对象来更新表结构,启动hibernate时会自动检查数据库,如果缺少表,则自动建表:如果表里缺少列,则自动添加列. 还有其他的参数: create:启动hibernate时,自动删除原来的表,新建所有的表,所以每次启动后的以前数据都会丢失.