django模型中有外键关系的表删除相关设置
一.一对一
例如有Author、AuthorDetail两表
author = models.OneToOneField(to='Author', null=True,
related_name='detail',
db_constraint=False,
on_delete=models.CASCADE
)
1)关系字段放在AuthorDetail表中:作者删除详情删除,详情删除作者保留
2)作者找详情用 外键related_name(detail),详情找作者用 外键字段(author)
3)db_constraint断开表关联,on_delete规定逻辑关联删除动作,models.CASCADE级联删除
二.一对多
例如Book、Publish两表
publish = models.ForeignKey(to='Publish', null=True,
related_name='books',
db_constraint=False,
on_delete=models.DO_NOTHING,
)
1)关系字段放在Book表中(多的一方):出版社删除书外键不动,书删除没有任何影响
2)出版社找书用 外键related_name(books),书找出版社 外键字段(p