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.IntegerField(default=0)    email = models.EmailField()

    def __unicode__(self):        return self.name

class Tag(models.Model):    contact = models.ForeignKey(Contact)      name = models.CharField(max_length=50)

    def __unicode__(self):        return self.name

这是由于Django2.0之后定义外键需要加上on_delete参数, 此参数是为了避免两个表里面数据不一致的问题,2.0之前的版本on_delete参数有个默认值models.CASCADE,2.0及之后不再默认,不手动加上的话会报错。

如下添加on_delete = models.CASCADE 或者 on_delete = models.DO_NOTHING 即可。

123456789101112131415
class (models.Model):    name = models.CharField(max_length=200)    age = models.IntegerField(default=0)    email = models.EmailField()

    def __unicode__(self):        return self.name

class Tag(models.Model):    contact = models.ForeignKey(Contact,on_delete=models.DO_NOTHING)  # 设置on_delete参数    name = models.CharField(max_length=50)

    def __unicode__(self):        return self.name

原文:大专栏  Django2.0在models创建数据表时报错

原文地址:https://www.cnblogs.com/petewell/p/11601717.html

时间: 2024-10-07 08:09:49

Django2.0在models创建数据表时报错的相关文章

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

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

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.CharFi

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

解决办法: 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

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

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: 'on_delete'

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): #创建英

yii框架之gii创建数据表对应的model类

一.首先是在数据库中建立工程需要的表: 二.然后,配置对应文件: 在工程目录下yiiProject\protected\config\main.php.在50行定义了db应用组件,下面后一段注释掉了的mysql的链接配置项,我们将未注释的db注释掉,然后打开mysql链接代码并填写相关信息即可完成mysql链接配置项. 即,把下面代码         'db'=>array(             'connectionString' => 'sqlite:'.dirname(__FILE_

第7讲++创建数据表和约束

二.创建数据表 1.创建简单的数据表 --命令格式 --create table 表名 -- (列定义 列约束 [,--n]) --实例1:在xscj库中,创建一个简单的表xsqk. create table xscj.dbo. xsqk (学号 char (10), 姓名 varchar (10), 性别 bit , 联系电话 char(11) ) 实例2:在xscj库中,创建"序号"标识属性."学号"非空属性,"性别"有默认值1的表xsqk.

如何创建数据表

一.什么是数据表? 数据表(或称表)是数据库最重要的组成部分之一,是其他对象的基础. 行成为记录,列成为字段.如果涉及数据,必须要在数据库里创建数据表. 二.如何创建MYSQL数据表? 1.在创建数据表之前,我们需要先打开数据库.我们使用"USE 数据库名称"命令来打开.验证用户打开的是哪个数据库,我们可以使用命令"SELECT DATABASE()". 比如: mysql> use test; 打开数据库Database changedmysql> s

mysql之创建数据库,创建数据表

写在前面 项目中用到mysql数据库,之前也没用过mysql,今天就学下mysql的常用的语法,发现跟sql server的语法极其相似.用起来还是蛮简单的. 一个例子 1.创建一个名为School的数据库. 1.创建一个学生信息表:学生id(自增,主键),姓名,年龄,性别,电话,籍贯,入学时间,所属班级id(外键). 2.创建一个学生成绩表:成绩id(自增,主键),科目,成绩,学生id(外键),创建时间. 3.创建一个学生班级表:班级id(主键,自增),班级名称. 创建表和数据库 #如果存在数