#on_delete=None, #当关联的email数据被删除时候,该数据也会被删除,不存在 #on_delete=models.CASCADE, #性质和None一样是默认删除 #on_delete=models.DO_NOTHING, #当关联的数据被删除时,自己不受影响,什么事都不做,不会报错 #on_delete=models.PROTECT, #关联保护,因为邮箱数据被用户表关联,所以该邮箱不允许被删除,并且触发ProtectError #Cannot delete some instances of model 'EmailInfo' because they are referenced through a protected foreign key: 'UserInfo.el'", <QuerySet [<UserInfo: UserInfo object>]> #on_delete=models.SET_NULL, #删除关联数据,自己被设置为null(前提字段需要设置为可空null=True) #对于测试models.SET_NULL时,我们需要先了解,对于数据库的基本字段设置,像null,max_length这些属性,我们需要重新去生成数据表, #对于on_delete等Django中的附属属性,我们可以动态修改,不需要重新生成数据表,所以如果我们开始并没有设置null=True(默认false),我们需要去重新生成数据表 #on_delete=models.SET_DEFAULT,#删除关联数据后,会将自己的数据设置为默认值,需要设置default属性 #on_delete=models.SET(3) #和SET_DEFAULT相似,只不过不需要设置默认值,在SET()中可以直接设置 on_delete=models.SET(set_test) #和SET一样,只不过值设为了回调函数,需要将函数设为全局,可调用 db_constraint=False,这个就是保留跨表查询的便利(双下划线跨表查询```),但是不用约束字段了,一半公司都用false,这样就省的报错,因为没有了约束(Field字段对象,既约束,又建立表与表之间的关系)