1.全自动
利用ORM自动创建第三张关系表
之前用到的ManyToManyField就是全自动
优点:不需要自己去写代码
缺点:第三张表的拓展性极差,没有办法加额外字段
2.半自动
class Book(models.Model):
book_name = models.CharField(max_length=32)
author = models.ManyToManyField(to='Author',through='Book2Author',through_fields=('book','author'))
through参数告诉ORM不要去创建第三张表,through_fields字段告诉ORM通过我们自己写的哪个字段进行第三张表关联
through_fields字段后的值顺序:第三张表查询对应的表,外键字段需要用哪个字段,则哪个排在前面
换言之:外键字段在哪张表,那字段就哪个在先
class Author(models.Model):
author_name = models.CharField(max_length=32)
class Book2Author(models.Model):
book = models.ForeignKey(to='Author')
author = models.ForeignKey(to='Book')
可以使用ORM的正方向查询,但没法使用add,set,remove,clear这四个方法
为了拓展性更高,一般都推荐使用半自动
3.全手动
models.ForeignKey(to='')
自己指定一切
优点:第三张表完全取决于自己
缺点:需要写代码较多,ORM不能够再使用一些简单的方法
例如:add remove 正方向查询等
因此不建议用该方式
全手动不需要掌握