django中model.py
# 报警表
class Police(models.Model):
# 货物类型(w)
cargo = models.models.ForeignKey(Cargo,on_delete=models.CASCADE)
class Meta:
db_table = 'police'
外键中的on_delete
例如上面on_delete=models.CASCADE代表的是当关联表中的数据删除时,该外键也删除
还有几种情况:
on_delete=models.SET_NULL,代表当关联表中的数据删除时,该外键置空,当然,你的这个外键字段得允许为空,null=True
on_delete=models.SET_DEFAULT,代表当关联表中的数据删除时,外键字段设置为默认值,所以定义外键的时候注意加上一个默认值。
on_delete的值:
CASCADE:级联操作。如果外键对应的那条数据被删除了,那么这条数据也会被删除。
PROTECT:受保护。即只要这条数据引用了外键的那条数据,那么就不能删除外键的那条数据。如果我们强行删除,Django就会报错。
SET_NULL:设置为空。如果外键的那条数据被删除了,那么在本条数据上就将这个字段设置为空。如果设置这个选项,前提是要指定这个字段可以为空。
SET_DEFAULT:设置默认值。如果外键的那条数据被删除了,那么本条数据上就将这个字段设置为默认值。如果设置这个选项,前提是要指定这个字段一个默认值。
SET():如果外键的那条数据被删除了。那么将会获取SET函数中的值来作为这个外键的值。SET函数可以接收一个可以调用的对象(比如函数或者方法),如果是可以调用的对象,那么会将这个对象调用后的结果作为值返回回去。可以不用指定默认值
DO_NOTHING:不采取任何行为。一切全看数据库级别的约束。
参考博客:
https://www.cnblogs.com/daicw/p/12794753.html
https://blog.csdn.net/qq_22918243/article/details/88919910