Django生成数据库及添加用户报错解决方案
Django生成数据库表时报错__init__()missing1requiredpositionalargument:'on_delete'
原因:
在django2.0后,定义外键和一对一关系的时候需要加上on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错
例如:
owner=models.ForeignKey(UserProfile)--->报错
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就可以了。
在使用Django添加用户时出现报错:
django.db.utils.IntegrityError:(1452,'Cannotaddorupdateachildrow:aforeignkeyconstraintfai
ls(`cms`.`app01_book_author`,CONSTRAINT`app01_book_author_book_id_df0ca405_fk_app01_book_id`FOREIG
NKEY(`book_id`)REFERENCES`app01_book`(`id`))')
[31/Mar/201921:20:45]"GET/addbook/HTTP/1.1"500216210
解决办法,需要在setting.py文件的databases中取消外键检查:
1DATABASES={
DATABASES={ 'default':{ 'ENGINE':'django.db.backends.mysql', 'NAME':'cms',#你的数据库名称 'USER':'root',#你的数据库用户名 'PASSWORD':'123456',#你的数据库密码 'HOST':'',#你的数据库主机,留空默认为localhost 'PORT':'3306',#你的数据库端口 'OPTIONS':{ "init_command":"SETforeign_key_checks=0;",#取消外键检查 } } }
问题解决!!!
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。