on_delete=models.CASCADE级联删除
on_delete=None, # 默认models.CASCADE
on_delete=models.CASCADE, # 级联删除,即关联的表删除某一项数据,此表关联的数据都会被删除
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
class Publisher(models.Model): name = models.CharField(max_length = 32 ) class Book(models.Model): name = models.CharField(max_length = 32 ) publisher = models.ForeignKey(to = "Publisher" ,on_delete = models.CASCADE) ''' 出版社 id name 1 新华出版社 2 人民出版社 3 机械工业出版社 书 id name publisher_id 1 新华字典 1 2 少年阿宾 2 3 python之路 3 4 自然 1 #级联删除,表示假如出版社删除了1和2,字段,关联到书的都会被删除掉,即会删除1,2,4 ''' |
on_delete=models.DO_NOTHING, # 删除关联数据,什么也不做
on_delete=models.PROTECT, # 删除关联数据,引发错误ProtectedError,保护作用,关联的表删除,会提醒不让删除
# models.ForeignKey('关联表', on_delete=models.SET_NULL, blank=True, null=True)
on_delete=models.SET_NULL, # 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空,一对一同理)
# models.ForeignKey('关联表', on_delete=models.SET_DEFAULT, default='默认值')
on_delete=models.SET_DEFAULT, # 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值,一对一同理)
on_delete=models.SET(值), # 删除关联数据,
a. 与之关联的值设置为指定值,设置:models.SET(值)
b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)