【Django实战】创建多对多关系表的三种模式及优缺点分析

导读:本篇文章讲解 【Django实战】创建多对多关系表的三种模式及优缺点分析,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

我是一个甜甜的大橙子🍊,欢迎关注✉️!
我相信技术的力量💪
努力将所学分享给大家😎
你的点赞❤️分享🚀收藏📖就是对我最大的鼓励!

第一种:通过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

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!