Django生成数据库表时报错__init__()失踪1所需的位置参数:“on_delete”
原因:
在django2.0后,定义外键和一对一关系的时候需要加上on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错
例如:
=models.ForeignKey所有者(UserProfile)——→报错
=models.ForeignKey所有者(UserProfile on_delete=models.CASCADE)——在老版本这个参数(models.CASCADE)是默认值
参数说明:
on_delete有级联、保护、SET_NULL, SET_DEFAULT,设置()五个可选的值
级联:级联删除。
保护:报完整性错误。
SET_NULL:将外键设置为空,前提是允许为null。
SET_DEFAULT:将外键设置为一个默认值
设置():调用外面的值,可以是一个函数
注:一般使用级联就可以了。
在使用Django添加用户时出现报错:
django.db.utils。IntegrityError:(1452不能添加或更新一个孩子行:外键约束fai
引用>
,ls (cms。“app01_book_author”,约束的app01_book_author_book_id_df0ca405_fk_app01_book_id外籍
,N键(book_id)引用“app01_book”(“id”)))
,[31日/3月/2019 21:20:45]“GET/向/HTTP/1.1”500 216210
解决办法,需要在setting.py文件的数据库中取消外键检查:
1数据库={
数据库={ “默认”:{ “发动机”:“django.db.backends.mysql”, “名称”:“cms”, #你的数据库名称 “用户”:“根”,#你的数据库用户名 “密码”:“123456”,#你的数据库密码 “主机”:“#你的数据库主机,留空默认为localhost “端口”:“3306”,#你的数据库端口 “选项”:{ :“init_command foreign_key_checks=0;”,#取消外键检查 } } }问题解决! ! !
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
Django生成数据库及添加用户报错解决方案