码迷,mamicode.com
首页 > 其他好文 > 详细

django on_delete属性

时间:2018-10-11 13:40:50      阅读:1734      评论:0      收藏:0      [点我收藏+]

标签:fun   属性   tle   需要   包含   存在   action   exception   性问题   

今天在给stdent创建class外键时发生了error

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

原码:

stu_Class=models.ForeignKey(to="Class",to_field="nid")

 

 

错误原因:

在Django2.0后,定义外键和一对一关系的时候需要加on_delete选项,他是它将是Django 2.0中的必需参数。

修改后代码:

    stu_Class = models.ForeignKey(to="Class", to_field="nid", on_delete=models.CASCADE)

 

 

Django官方文档对on_delete参数的解释

  • CASCADE

    级联删除。Django模拟SQL约束ON DELETE CASCADE的行为,并删除包含ForeignKey的对象。

    Model.delete()不会在相关模型上调用,但 会为所有已删除的对象发送pre_deletepost_delete信号。

  • PROTECT

    通过引发ProtectedError子类来 防止删除引用的对象 django.db.IntegrityError

  • SET_NULL

    设置ForeignKeynull; 这是如果只可能 nullTrue

  • SET_DEFAULT

    ForeignKey设置为默认值; ForeignKey必须设置的默认值 

  • SET()

    设置ForeignKey传递给的值 SET(),或者如果传入了callable,则调用它的结果。在大多数情况下,为了避免在导入models.py时执行查询,必须传递callable:

 

 

CASCADE:删除引用的对象时,也删除引用它的对象(例如,当您删除博客文章时,您可能也想删除注释)。SQL等价物:CASCADE

PROTECT:禁止删除引用的对象。要删除它,您必须删除手动引用它的所有对象。SQL等价物:RESTRICT

SET_NULL:将引用设置为NULL(要求字段可以为空)。例如,当您删除用户时,您可能希望保留他在博客帖子上发布的评论,但是说它是由匿名(或已删除)用户发布的。SQL等价物:SET NULL

SET_DEFAULT:设置默认值。SQL等价物:SET DEFAULT

SET(...):设置给定值。这个不是SQL标准的一部分,完全由Django处理。

DO_NOTHING:可能是一个非常糟糕的主意,因为这会在数据库中创建完整性问题(引用实际上不存在的对象)。SQL等价物:NO ACTION

 



django on_delete属性

标签:fun   属性   tle   需要   包含   存在   action   exception   性问题   

原文地址:https://www.cnblogs.com/Rongze-blog/p/9771780.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!