我是一个甜甜的大橙子🍊,欢迎关注??! 我相信技术的力量💪 努力将所学分享给大家😎 你的点赞??分享🚀收藏📖就是对我最大的鼓励!
第一种:通过ManyToManyField自动创建
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)
- 优点:自动创建多对多关系表
- 缺点:不能在多对多关系表上添加字段
第二种:手动创建
class Book(models.Model):
name = models.CharField(max_length=32)
class Author(models.Model):
name = models.CharField(max_length=32)
class BookAuthor(models.Model):
book = models.ForeignKey(to='Book')
author = models.ForeignKey(to='Author')
state = models.CharField()
- 优点:克服了第一种方法的缺点,可以自行添加字段
- 缺点:不能使用ORM方式查询
第三种:使用through=…模型
最简单和最优雅的方法是使用through=…模型,这最终将需要最少的工作来保持数据同步。
class Book(models.Model):
name = models.CharField(max_length=32)
author = models.ManyToManyField(to='Author',through='BookAuthor',through_fields=('book','author'))
class Author(models.Model):
name = models.CharField(max_length=32)
class BookAuthor(models.Model):
book = models.ForeignKey(to='Book')
author = models.ForeignKey(to='Author')
info = models.CharField(max_length=32)
|