Django生成数据库及添加用户报错解决方案

  

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生成数据库及添加用户报错解决方案