上接本课笔记第二部分: 第六模块: WEB框架开发之Django框架开发学习笔记1
五十六. ORM生成表模型
参考:https://www.cnblogs.com/yuanchenqi/articles/8963244.html 多表操模型
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
上面代码的最终效果, 创建了如下的五个表:
代码对应的sql语句: