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(可执行对象)