1. Django帮我们生成第三张表
class Author(models.Model):
name = models.CharField(max_length=32)
book = models.ManyToManyField('Book') #不在author表中生成字段,而是自动产生第3张表author_book,只会产生author_id和book_id的字段
2. 自己创建第三张表
class AuthorBook(models, models):
author = models.ForeignKey(Author, on_delete=models.CASCADE)
book = models.ForeignKey(Book, on_delete=models.CASCADE)
date = models.DateField() #可以自己任意新增字段
3. 自建的表和Django自动生成的表联合使用
class Author(models.Model):
name = models.CharField(max_length=32)
book = models.ManyToManyField('Book', through='AuthorBook', through_fields=['author', 'book'])
class AuthorBook(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表示推荐人