美文网首页
Django 在创建ForeignKey中出现错误

Django 在创建ForeignKey中出现错误

作者: 贝勒老爷 | 来源:发表于2021-02-25 14:07 被阅读0次

    今天在使用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中出现错误

          本文链接:https://www.haomeiwen.com/subject/rmxufltx.html