【1029 | Day55】创建多对多表关系的三种方式

3. 创建多对多表关系的三种方式

3.1 全手动

优点:

  • 第三张表可以任意的添加额外的字段

缺点:

  • orm查询的时候很多方法都不支持,查询的时候非常麻烦

如图:

3.2 全自动

优点:

  • django orm会自动帮你创建第三张关系表

缺点:

  • 但是它只会帮你创建两个表的关系字段 不会再额外添加字段
  • 虽然方便 但是第三张表的扩展性较差 无法随意的添加额外的字段
class Book(models.Model):
    ...
    authors = models.ManyToManyField(to='Author')

class Author(models.Models):
    ...

3.3 半自动

优点:

  • 手动建表,那就可以添加额外的字段,告诉orm第三张表是你自己建的
  • orm给我提供方便的查询方法

缺点:

  • 第三种虽然可以使用orm查询方法,但是不支持使用add()set()remove()clear()

注意:

  1. 半自动一定要加两个额外的参数:

    through='Book2Author', through_fields=('book','author')

  2. 后面字段的顺序由第三张表通过哪个字段查询单表 就把哪个字段放前面

posted @ 2019-10-29 19:50  fxyadela  阅读(166)  评论(0)    收藏  举报