第六模块: WEB框架开发之Django框架开发学习笔记2

上接本课笔记第二部分:    第六模块: WEB框架开发之Django框架开发学习笔记1

五十六. ORM生成表模型

 参考:https://www.cnblogs.com/yuanchenqi/articles/8963244.html 多表操模型

第六模块: WEB框架开发之Django框架开发学习笔记2
from django.db import models

# Create your models here.

"""
建表时,应当先建立普通表,普通字段.最后建立关联字段,关联表.
"""

# 出版社表
class Publish(models.Model):
    nid = models.AutoField(primary_key=True)
    name = models.CharField(max_length=20)

# 图书表
class Book(models.Model):
    nid = models.AutoField(primary_key=True)
    title = models.CharField(max_length=20)
    price = models.DecimalField(max_digits=8, decimal_places=2)
    pub_date = models.DateField()

    # 图书对应出版社, 一个出版社对应多个图书, 一对多关系
    # 下面的建立的publish字段会自动变成publish_id
    # 参数意思:to='Publish'对应的表, to_field='nid'对应表的对应字段(可以省略)
    publish = models.ForeignKey(to='Publish', to_field='nid', on_delete=models.CASCADE)  # on_delete=models.CASCADE级联删除,也就是当删除主表的数据时候从表中的数据也随着一起删除
    """
    上面的一句,相当于sql语句的两句.
    publish_id INT,
    FOREIGN KEY (publish_id) REFERENCES publish(id)
    """

    # 图书和作者多对多关系表的建立,简单做法, 传统做法请看最下面.
    authors = models.ManyToManyField(to='Author')  # 这里默认建立的表名是book_authors
    """
    上面的一句,相当于sql语句创建book2author图书与作者的关系表
    CREATE TABLE book2author(
    id INT PRIMARY KEY auto_increment,
    book_id INT,
    author_id INT,
    FOREIGN KEY (book_id) REFERENCES book(id),
    FOREIGN KEY (author_id) REFERENCES author(id)
    )
    """
View Code

上面代码的最终效果, 创建了如下的五个表:

第六模块: WEB框架开发之Django框架开发学习笔记2

 

代码对应的sql语句:

第六模块: WEB框架开发之Django框架开发学习笔记2

 

 第六模块: WEB框架开发之Django框架开发学习笔记2

 

上一篇:android – 推动将取代现有应用的Google Play更新


下一篇:RabbitMQ 几种工作模式---(三) Publish/Subscribe