Books表关系的建立
1.出版社表(Publish)和图书表(Book)关系__一对多:
2.图书表(Book)和作者表(Author)是多对多关系:
3.作者表(Author)和作者详情表(AuthorDetail)是一对一关系:
注:
一对多的关系一旦确立,关联字段写在多的一方
to_field默认不写,关联到Publish主键
on_delete = models.CASCADE 级联删除(删除关联数据,与之关联也删除)
on_delete = models.DO_NOTHING 删除关联数据,引发错误IntegrityError
on_delete = models.SET_NULL 删除关联数据,与之关联的值设置为null(前提该字段可以为空才可以设置)
on_delete = models.SET_DEFAULT 删除关联数据,与之关联的值设置为默认值(前提该字段需要设置默认值)
on_delete = models.SET 删除关联数据:
a.与之关联的值设置为指定值,设置:models.SET(值)
b.与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)
表断关联:
db_constraint=False:逻辑上表之间是由关联的,不会影响ORM的使用,实质上没有外键联系,单表的增删不会受外键影响
publish = models.ForeignKey(to='Publish', on_delete=models.DO_NOTHING, db_constraint=False)