美文网首页
Django在Models生成时报错

Django在Models生成时报错

作者: 何学诚 | 来源:发表于2019-03-29 19:09 被阅读0次

    1.python manage.py makemigrations 生成迁移数据库时报错

    from django.db import models
    
    # 书的类
    class BookInfo(models.Model):
        btitle = models.CharField(max_length=20)
        bpub_date = models.DateTimeField()
    
    # 英雄的类
    class HeroInfo(models.Model):
        hname = models.CharField(max_length=10)
        hgender = models.BooleanField()
        hcontent = models.CharField(max_length=1000)
        hbook = models.ForeignKey(BookInfo)
    

    这样就会报错


    1553857423.jpg

    2.解决方法

    就是 在models.ForeignKey(BookInfo ,on_delete=models.CASCADE)

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

    3.参数说明

    on_delete有CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()五个可选择的值。
    CASCADE:此值设置,是级联删除。
    PROTECT:此值设置,是会报完整性错误。
    SET_NULL:此值设置,会把外键设置为null,前提是允许为null。
    SET_DEFAULT:此值设置,会把设置为外键的默认值。
    SET():此值设置,会调用外面的值,可以是一个函数。
    一般情况下使用CASCADE就可以了。

    4.参考文献

    https://www.cnblogs.com/phyger/p/8035253.html

    相关文章

      网友评论

          本文标题:Django在Models生成时报错

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