classAuthor(models.Model):
name = models.CharField(max_length=32)
book = models.ManyToManyField('Book')#不在author表中生成字段,而是自动产生第3张表author_book,只会产生author_id和book_id的字段
2. 自己创建第三张表
classAuthorBook(models, models):
author = models.ForeignKey(Author, on_delete=models.CASCADE)
book = models.ForeignKey(Book, on_delete=models.CASCADE)
date = models.DateField()#可以自己任意新增字段
3. 自建的表和Django自动生成的表联合使用
classAuthor(models.Model):
name = models.CharField(max_length=32)
book = models.ManyToManyField('Book', through='AuthorBook', through_fields=['author','book'])classAuthorBook(models, models):
author = models.ForeignKey(Author, related_name='a', on_delete=models.CASCADE)#related_name用于反向查询
book = models.ForeignKey(Book, on_delete=models.CASCADE)
date = models.DateField()
reference = models.ForeignKey(Author, related_name='b', on_delete=models.CASCADE)#reference表示推荐人