Django 在创建ForeignKey中出现错误

今天在使用Django创建模型类的时候,出现了如下问题

一、

  • 在模型类里面创建外键,并生成迁移文件后,报了下面的错:

  hbook = models.ForeignKey('BookInfo')  #关系属性,建立一类和多类之间的关系
TypeError: __init__() missing 1 required positional argument: 'on_delete'

  • 原因:

在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错:

TypeError: __init__() missing 1 required positional argument: 'on_delete'

  • 解决方法:

hbook=models.ForeignKey('BookInfo',on_delete=models.CASCADE,)
即在外键值的后面加上 on_delete=models.CASCADE

二、

  • 在解决了上述问题后,重新执行迁移文件,还是报错:

You are trying to add a non-nullable field 'hbook' to heroinfo without a default; we can't do that (the database needs something to populate existing rows).

  • 原因:

提示我ForeignKey必须有一个default值。但是django里面没有要求ForeignKey必须有一个默认值。
原来旧的数据库文件和现在执行的操作有冲突。

  • 解决方法:

把migrations文件夹内除了init.py以外的文件删除,重新执行makemigrations就可以了。
完成!

你可能感兴趣的:(Django 在创建ForeignKey中出现错误)