我是一个甜甜的大橙子🍊,欢迎关注✉️!
我相信技术的力量💪
努力将所学分享给大家😎
你的点赞❤️分享🚀收藏📖就是对我最大的鼓励!
第一种:通过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)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/63019.html