小编给大家分享一下关于Django2.0外键参数on_delete使用方法的案例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家学习,希望大家阅读完这篇文章后大所收获,下面让我们一起去学习方法吧!

最新的django2.0使用外键(ForeignKey)和一对一(OneToOneField)的时候,必须添加on_delete参数,不然就会报错。

刚使用django2.0的朋友,总是遇到类似下面的报错,这就是没有给外键添加on_delete参数的原因。

TypeError:__init__()missing1requiredpositionalargument:'on_delete'

官方案例:

一对一(OneToOneField)

fromdjango.confimportsettingsfromdjango.dbimportmodelsclassMySpecialUser(models.Model):user=models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,)supervisor=models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,related_name='supervisor_of',)

一对多(ForeignKey)

fromdjango.dbimportmodelsclassAbstractCar(models.Model):manufacturer=models.ForeignKey('Manufacturer',on_delete=models.CASCADE)classMeta:abstract=True

下面下整理的on_delete参数的各个值的含义:

on_delete=None,#删除关联表中的数据时,当前表与其关联的field的行为on_delete=models.CASCADE,#删除关联数据,与之关联也删除on_delete=models.DO_NOTHING,#删除关联数据,什么也不做on_delete=models.PROTECT,#删除关联数据,引发错误ProtectedError#models.ForeignKey('关联表',on_delete=models.SET_NULL,blank=True,null=True)on_delete=models.SET_NULL,#删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空,一对一同理)#models.ForeignKey('关联表',on_delete=models.SET_DEFAULT,default='默认值')on_delete=models.SET_DEFAULT,#删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值,一对一同理)on_delete=models.SET,#删除关联数据,a.与之关联的值设置为指定值,设置:models.SET(值)b.与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)

多对多不需要on_delete,这就不多说了。想要了解更多on_delete的资料,可去官网进行查看。

以上是关于Django2.0外键参数on_delete使用方法的案例分析的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!