第一種:
django orm自動幫我們創建:
表一:
class Book(models.Model): name = models.CharField(max_length=32) authors = models.ManyToManyField(to='Author')
表二:
class Author(models.Model): name = models.CharField(max_length=32)
這種方式可以讓Django迅速的幫我們建一張關系表出來,好處是可以通過這張表進行跨表查詢,壞處是一張虛擬表,拓展性差。
第二種:
存手動創建第三張表:
class Book(models.Model): name = models.CharField(max_length=32)
class Author(models.Model): name = models.CharField(max_length=32)
class Book2Author(models.Model): book = models.ForeignKey(to='Book') author = models.ForeignKey(to='Author') info = models.CharField(max_length=32)
這種方式無法通過orm跨表查詢(不要使用)
第三種:
半自動創建第三張表(可拓展性高,並且能夠符合orm查詢)
class Book(models.Model): name = models.CharField(max_length=32) authors = models.ManyToManyField(to='Author',through='Book2Author',through_fields=('book','author')) # 哪張表創建的就優先寫哪張表的小寫
class Author(models.Model): name = models.CharField(max_length=32)
class Book2Author(models.Model): book = models.ForeignKey(to='Book') author = models.ForeignKey(to='Author') info = models.CharField(max_length=32)