Python - Django - 作者表多对多关联书籍表

models.py 代码:

from django.db import models

# Create your models here.


# 出版社
class Publisher(models.Model):
    id = models.AutoField(primary_key=True)  # 自增的 id 主键
    # 创建一个 varchar(64) 的唯一的不为空的字段
    name = models.CharField(max_length=64, null=False, unique=True)

    def __str__(self):
        return "<Publisher object: {}>".format(self.name)


# 书籍
class Book(models.Model):
    id = models.AutoField(primary_key=True)  # 自增的 ID 主键
    # 创建一个 varchar(64) 的唯一的不为空的字段
    title = models.CharField(max_length=64, null=False, unique=True)
    # 和出版社关联的外键字段
    publisher = models.ForeignKey(to="Publisher")

    def __str__(self):
        return "<Book object: {}>".format(self.title)


# 作者
class Author(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=16, null=False, unique=True)
    book = models.ManyToManyField(to="Book")  # 多对多关联 Book 表,ORM 会自动生成第 3 张表

    def __str__(self):
        return "<Author object: {}>".format(self.name)

然后执行命令,生成表

会生成两个表

添加字段

这里 id 为 1 的作者写了两本书,id 为 2、3 的作者一起写了一本书

 

posted @ 2019-07-24 15:11  Sch01aR#  阅读(244)  评论(0编辑  收藏  举报