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 正方向查询等 因此不建议用该方式 全手动不需要掌握