其他分享
首页 > 其他分享> > 多对多关系表的三种创建方式

多对多关系表的三种创建方式

作者:互联网

目录

多对多关系表的三种创建方式

全自动

在我们之前创建多对多表的时候,一直用的都是全自动的方式来创建第三张关系表的

class Book(models.Model):
    title = models.CharField(max_length=32)
    price = models.DecimalField(max_digits=8, decimal_places=2)
    # 创建多对多关系字段
    authors = models.ManyToManyField(to='Author')


class Author(models.Model):
    name = models.CharField(max_length=32)

好处:

不足:

纯手写(不推荐)

class Book(models.Model):
    title = models.CharField(max_length=32)


class Authors(models.Model):
    name = models.CharField(max_length=32)


class Book2Authors(models.Model):
    book = models.ForeignKey(to='Book')
    author = models.ForeignKey(to='Authors')

    # 可以添加任意字段
    create_time = models.DateField(auto_now_add=True)

好处:

不足:

半自动(推荐使用)

class Book(models.Model):
    title = models.CharField(max_length=32)

    authors = models.ManyToManyField(to='Authors', through='Book2Authors', through_fields=("book", "authors"))
    # through 记录与哪张表的关系表,through_field来指定 哪几个外键字段

class Authors(models.Model):
    name = models.CharField(max_length=32)


class Book2Authors(models.Model):
    book = models.ForeignKey(to='Book')
    authors = models.ForeignKey(to='Authors')
    
    # 可以扩展任意字段

标签:第三张,方式,models,创建,through,max,三种,Model,class
来源: https://www.cnblogs.com/setcreed/p/11979693.html