当前位置 : 主页 > 编程语言 > python >

django orm表断关联db_constraint与on_delete

来源:互联网 收集:自由互联 发布时间:2022-06-15
db_constraint=False 取消外键约束,只是逻辑上的关联,表与表之间不再受外键约束,但是orm连表查询可正常使用,就是保留跨表查询的便利,但是又没有了外键约束 on_delete 当删除关联表中

  db_constraint=False

取消外键约束,只是逻辑上的关联,表与表之间不再受外键约束,但是orm连表查询可正常使用,就是保留跨表查询的便利,但是又没有了外键约束

on_delete

当删除关联表中的数据时,当前表与其关联的行的行为。

    1、models.CASCADE

         删除关联数据,与之关联也删除

    2、models.DO_NOTHING

         删除关联数据,引发错误IntegrityError,自己不受影响,什么事都不做

    3、models.PROTECT

         删除关联数据,引发错误ProtectedError

    4、models.SET_NULL

         删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空)

    # models.ForeignKey('关联表', on_delete=models.SET_NULL, blank=True, null=True)

置空模式,删除的时候,外键字段被设置为空,前提就是blank=True, null=True,定义该字段的时候,允许为空。  

    5、models.SET_DEFAULT

         删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值)

    # models.ForeignKey('关联表', on_delete=models.SET_DEFAULT, default='默认值')

    置默认值,删除的时候,外键字段设置为默认值,所以定义外键的时候注意加上一个默认值。

    6、models.SET

         删除关联数据,

         a. 与之关联的值设置为指定值,设置:models.SET(值)

         b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)

上一篇:Python基础学习-3.程序的组织结构
下一篇:没有了
网友评论