django外键三种多对多关系表的创建

Posted 不想拖累他人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django外键三种多对多关系表的创建相关的知识,希望对你有一定的参考价值。

三种 全自动 半自动 纯手动

全自动

以图书和作者为例

class Book(model.Model):
    title = model.CharField(max_length=32)
    authors = model.ManyToManyField(to=\'Author\')


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

纯手动

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


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



class Book2Author(model.Model):
    book = model.ForeignKey(to=\'Book\',on_delete=models.CASCADE)
    author = model.ForeignKey(to=\'Author\',on_delete=models.CASCADE)

半自动

class Book(model.Model):
    title = model.CharField(max_length=32)
    author = model.ManyToManyField(to=\'Author\',through=\'Book2Author\',though_fields = (\'book\',\'author\'))
        


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


class Book2Author(model.Model):
     book = model.ForeignKey(to=\'Book\',on_delete=models.CASCADE)
     author = model.ForeignKey(to=\'Author\',on_delete=models.CASCADE)

半自动相对使用较多 有好的扩展性且可以使用orm查询

建立外键时要添加on_delete参数 1.x版本会默认级联删除,之后的版本都需额外填写否则会报错

 

以上是关于django外键三种多对多关系表的创建的主要内容,如果未能解决你的问题,请参考以下文章

建表原则

61.Django03

61.Django03

django数据库操作-增删改查-多对多关系以及一对多(外键)关系

Django知识点汇集

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