多表模型创建分析:
1)作者表:一个作者有姓名和年龄
2)作者信息表: 有作者就有信息,点击作者的名字可以查询他的电话和地址, 作者表对应作者信息表,所以他们之间是一对一对的关系
3)出版社表: 出版社有对应城市地址和邮箱号
4)书籍表: 包含了书名和价格,还有写这本书有哪些作者,一本书可以有多个作者来写,也可以是一个作者写多本书,所以书籍 和作者是多对多的关系;
一本书对应一个出版社, 一个出版社又可以出多本书, 所以书籍和出版社是一对多的关系
用了OneToOneField和ForeignKey,模型表的字段,后面会自定加_id
ManyToManyField会自动创建第三张表 *************重点*************
一对一的关系:OneToOneField
一对多的关系:ForeignKey
多对多的关系:ManyToManyField
******************************
在Models创建如下模型:
# 出版社表
class Publish(models.Model):
# id 如果不写,会自动生成,名字叫nid, 并且自增
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=32)
addr = models.CharField(max_length=64)
email = models.EmailField() # 作者表
class Author(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=32)
# 数字类型
sex = models.IntegerField()
# 可以用ForeignKey,但是要设置唯一约束,会报警告,不建议用,建议用OneToOneField
# AuthorDetail= models.ForeignKey(unique=True)
# to ='AuthorDetail' 加了引号,只要 class AuthorDetail 这个表在这个页面上能找到就行,不需要引用,
# to ='AuthorDetail' 如果不加引号,就只能写在这个表的上面创建 class AuthorDetail 这个表,必须在上面定义类
AuthorDetail = models.OneToOneField(to='AuthorDetail', to_field='id') def __str__(self):
return self.name # 作者信息表
class AuthorDetail(models.Model):
id = models.AutoField(primary_key=True)
phone = models.CharField(max_length=32) # 电话
addr = models.CharField(max_length=64) #地址 # 书籍表
class Book(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=32)
price = models.DecimalField(max_digits=5, decimal_places=2)
publish = models.ForeignKey(to=Publish, to_field='id') # 出版社的关系一对多
# 一对多的关系一旦确立,关联字写在多的一方
author = models.ManyToManyField(to=Author) def __str__(self):
return self.name

注意事项:

写完以上代码后, 在导航栏中找到 Tools ---> Run manage.py Task... 点击后如图:

在里面输入:

  -python3 manage.py makemigrations ------> 只是对数据变更做记录

  -python3 manage.py migrate ------> 把变更的数据同步到数据库

操作完以上步骤后打开mysql数据库刷新即可

Django day08 多表操作 (一) 多表模型创建的更多相关文章

  1. Django day08 多表操作 (二) 添加表记录

    一: 一对多 1. 一对多新增 两种方式:  publish = 对象    publish_id = id 1. publish_id 和 publish 的区别就是: 1)publish_id 可 ...

  2. Django学习笔记(7)——单表操作和多表操作

    单表操作 1,创建模型 创建名为book的APP,在book下的models.py中创建模型: from django.db import models # Create your models he ...

  3. Django之model联表:一对多、跨表操作,联表查询

    表结构概述 model.py : class Something(models.Model): name = models.CharField(max_length=32) class UserTyp ...

  4. Django模型层:单表操作,多表操作,常用(非常用)字段和参数,Django-model进阶

    一.web应用 二.模板的导入与继承 三.静态文件相关 四.inclusion_tag:返回html片段 五.模型层 一.web应用 -s包括两个部分:web服务器+application -目前阶段 ...

  5. 17-2 orm单表操作和多表操作

    参考:https://www.cnblogs.com/liwenzhou/p/8660826.html 一  ORM单表操作 1 增删改查 1. 查询 1. 查所有 models.Publisher. ...

  6. 数据库常用SQL语句(一):常用的数据库、表操作及单表查询语句

    以MySql数据库为例进行说明 1.数据库操作语句 2.表的操作语句 3.表中的字段操作语句 4.MYSQL支持的完整性约束 数据库管理系统提供了一致机制来检查数据库表中的数据是否满足规定的条件,以保 ...

  7. mysql单表操作与多表操作

    0. null和notnull: 使用null的时候: create table t8( id int auto_increment primary key, name varchar(32), em ...

  8. 阶段3 1.Mybatis_09.Mybatis的多表操作_1 mybatis表之间关系分析

    4.mybatis中的多表查询     表之间的关系有几种:         一对多         多对一         一对一         多对多     举例:         用户和订单 ...

  9. Django学习手册 - ORM 数据创建/表操作 汇总

    ORM 查询的数据类型: QuerySet与惰性机制(可以看作是一个列表) 所谓惰性机制:表名.objects.all()或者.filter()等都只是返回了一个QuerySet(查询结果集对象),它 ...

随机推荐

  1. node.js(API解读) - process (http://snoopyxdy.blog.163.com/blog/static/60117440201192841649337/)

    node.js(API解读) - process 2011-10-28 17:05:34|  分类: node |  标签:nodejs  nodejsprocess  node.jsprocess  ...

  2. PHP 数据库连接 (Mysql Mysqli PDO)

    1.PHP与Mysql扩展(本扩展自 PHP 5.5.0 起已废弃,并在将来会被移除),PHP原生的方式去连接数据库,是面向过程的 <?php $mysql_conf = array( 'hos ...

  3. js可以随意拖拽的div的实现

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. swift-延时加载函数

    //延时加载函数 func delayLoad(){ let time: NSTimeInterval = 2.0 let delay = dispatch_time(DISPATCH_TIME_NO ...

  5. select 如何将文本居中

    开始测试了几种方式但是结果都是失败的,最后测试一种方式终于成功了,所以做下笔记: select{ width: 3.2rem; height: 1.2rem; border-radius: 0.6re ...

  6. LeetCode 712. Minimum ASCII Delete Sum for Two Strings

    Given two strings s1, s2, find the lowest ASCII sum of deleted characters to make two strings equal. ...

  7. ActiveMQ学习总结(5)——Java消息服务JMS详解

    JMS: Java消息服务(Java Message Service) JMS是用于访问企业消息系统的开发商中立的API.企业消息系统可以协助应用软件通过网络进行消息交互. JMS的编程过程很简单,概 ...

  8. 清北学堂模拟赛d7t6 拯救世界

    分析:如果题目中没有环的话就是一道裸的最长路的题目,一旦有环每个城市就会被救多次火了.把有向有环图变成有向无环图只需要tarjan一边就可以了. #include <bits/stdc++.h& ...

  9. 洛谷 P1120 小木棍 [数据加强版]

    P1120 小木棍 [数据加强版] 题目描述 乔治有一些同样长的小木棍,他把这些木棍随意砍成几段,直到每段的长都不超过50. 现在,他想把小木棍拼接成原来的样子,但是却忘记了自己开始时有多少根木棍和它 ...

  10. 查看OS 各项参数

    查看CPU 在linux下 cat /proc/cpuinfo 可以得到CPU信息. 要注意的是CPU型号有不同的种类比如AMD Intel.可能在这个文件中显示的信息也不同.但终归是存在这个文件中的 ...