1.建立好模型类:

from django.db import models# 设计和模型对应的类,(模型类)
# Create your models here.# 一类
# 图书类
class BookInfo(models.Model):"""图书模型类"""#  CharField是字符串类型,max_length指定字符串的最大长度btitle = models.CharField(max_length=20)  # 图书名称# DateFields是日期类型bpub_date = models.DateField()# 一个图书类对应多个人物类
# 多类
# 人物类
# 人物名hname、性别hgender、年龄hage、备注hcomment
# 关系属性 hbook,建立图书类和人物类之间的一对多关系
class FigureInfo(models.Model):"""人物模型类"""hname = models.CharField(max_length=20) # 人物名称# 性别,BooleanField说明是bool类型,default指定默认值,False代表男hgender = models.BooleanField(default=False)# 备注hcomment = models.CharField(max_length=128)"""关系属性: 通过ForeignKey("模型类名")来指定一对多的关系定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题关系属性对应的表的字段名格式: 关系属性名_id"""hbook = models.ForeignKey("BookInfo",on_delete=models.CASCADE)

Django2.0之后,设置外键需要注意:

定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题 on_delete=models.CASCADE

生成表

2.项目路径的终端下使用命令生成迁移文件

    python manage.py makemigrations  

3. 项目路径的终端下使用命令生成数据库的表

   python manage.py migrate

4. 可以在migrations的包下查看自己相关的表的属性,默认是保存到sqlite数据库中的

关系属性对应的表的字段名格式: 关系属性名_id

SQLiteExpertPro查看数据库:  

5. 现在两个空的表已经生成好,

进入shell中,进行增删改查,多表关系查询

1.添加数据到数据库的表中

通过关联属性指定关联的关系

    即看有关联属性这个模型类的对象,是属于被关联的模型类的哪个对象

例如 ,  有关联属性的模型类的对象-->是人物孙悟空的     则和他要关联的就是没有关联属性的模型类对象-->是书籍西游记

有关联属性的模型类的对象-->是人物宋江的     则和他要关联的就是没有关联属性的模型类对象-->是书籍水浒传

2. 查看数据库:

FigureInfo表中的hbook_id 的值就对应它属于的那个图书

BookInfo

FigureInfo

可以继续添加数据 ,  注意关联属性的值

       

3. shell中进行增删改查

参考 :   https://blog.csdn.net/wei18791957243

查看和图书关联的人物的信息

被关联的模型类对象.有关联属性的模型类名_set.all()      # 返回有关联的 模型类的对象的列表

关系操作的关系说明:

Django框架(5.django中模型类建立关系和多表关系查询)相关推荐

  1. Django框架(6.django后台管理/通过后台对数据表的增删改)

    1.django项目中的admin.py  即:  后台管理相关文件 使用Django提供的相关管理机制的步骤 1.本地化 语言和时区的本地化    ( 修改项目中的settings.py的文件) 2 ...

  2. Django框架(11.Django中的通过模型类查询数据以及相关函数和条件)

     Django中的查询函数 通过模型类.objects属性可以调用如下函数,实现对模型类对应的数据表的查询.    不管哪个函数注意返回值的类型 函数名 功能 返回值 说明 get 返回表中满足条件的 ...

  3. Django框架(16.Django中的模型类管理器以及自定义管理器)

    模型类.objects.all()->objects是一个什么东西呢? 答:objects是Django帮我自动生成的管理器对象,通过这个管理器可以实现对数据的查询. objects是model ...

  4. Django框架(14.Django中模型类的关系,以及模型类关联查询)

    Django中模型类的关系,以及模型类关联查询 1.模型类关系 1.1 一对多关系 1.2多对多关系 1.3 一对一关系 1.4 一对多举例: 1.5 多对多举例: 1.6 一对一举例: 2.关联查询 ...

  5. Django(part49)--用Django自带的User模型类进行模拟登录

    学习笔记,仅供参考 用Django自带的User模型类进行模拟登录 基于上个Blog中学习的用户认证系统,我们再用Django自带的User模型类,进行模拟登录(模拟登录的意思就是没有真正的登录,不涉 ...

  6. Django框架(10.Django中的模型类的定义以及模型类字段属性和选项)

    Django中的模型类的定义以及模型类字段属性和选项 1.模型类的定义 2.模型类属性命名限制 2.1字段类型和属性 2.2选项 1.模型类的定义 ORM:表就代表类,字段代表属性 模型类需要继承自m ...

  7. Django框架(12.Django中模型类高阶查询(Q对象以及F对象 和聚合函数查询))

    Q对象 作用:用于查询时条件之间的逻辑关系.not and or,可以对Q对象进行  &  |  ~  操作. & : 且        | :  或          ~ :非: 就 ...

  8. Django框架(3.django设计模型类、模型类生成表、ORM框架简介)

    ORM框架简介 O是object,也就类对象的意思, R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思, M是mapping,是映射的意思.在ORM框架中,它帮我们把类和数据表进 ...

  9. Django中模型类 属性-学习笔记

    定义属性 Django根据属性的类型确定以下信息: 当前选择的数据库支持字段的类型 渲染管理表单时使用的默认html控件 在管理站点最低限度的验证 django会为表创建自动增长的主键列,每个模型只能 ...

最新文章

  1. Java豆瓣电影爬虫——减少与数据库交互实现批量插入
  2. 往事并不如烟@武汉 --- 和同事们一起'诈金花’
  3. java——import语句
  4. Java中 equals和==的区别?
  5. 四级计算机网络考试大纲,2017年全国计算机等级考试四级计算机网络考试大纲...
  6. windows,linux桌面系统管理
  7. SPI总线接口与简单配置
  8. 简单游戏代码_简单游戏
  9. linux 小巧的浏览器,崇尚简约 六款小体积浏览器推荐
  10. 小波去噪 语音去噪 信号小波去噪 小波基去噪 小波收缩去噪-matlab
  11. 百度Apollo计划跟踪:Apollo 3.0前言
  12. arm跑操作系统的意义_上手一个具体而微的 ARM 操作系统
  13. 手把手写深度学习(3)——用RNN循环神经网络自动生成歌词之理论篇
  14. python统计三国演义人物出场次数
  15. php zen kaku代表什么,Convert kana one from another (zen-kaku, han-kaku and more) - PHP 7 中文文档...
  16. 终端 删除php文件内容,Mac_mac命令行终端可以卸载吗?mac命令行终端卸载软件教程,  mac os系统卸载软件方式有 - phpStudy...
  17. Android MVVM框架搭建(三)MMKV + Room + RxJava2
  18. 2022年康复医学治疗技术高级职称考试题库及答案
  19. python语言通俗理解_慢步学习,python语言编程,来扯扯语言的学习理解
  20. Pandas中DataFrame的属性、方法、常用操作以及使用示例

热门文章

  1. python标准库time_Python3标准库:time时钟时间
  2. linux该专接本还是工作_工作还是考研,我究竟该怎么选?
  3. camunda流程引擎如此简单(二)
  4. oracle中case when关键字的使用
  5. Spring Boot——WebMvcConfigurerAdapter已过时解决方案
  6. ActiveMq消费端实现集群部署
  7. C++阶段01笔记03【运算符(算术运算符、赋值运算符、比较运算符、逻辑运算符)】
  8. Java11-day02【多态(成员访问、多态转型、内存图解)、抽象类(成员特点)、接口(成员特点)、类和接口的关系、抽象类和接口的区别、综合案例】
  9. Java04-day04【IDEA(概述、启动配置、项目结构、内容辅助键、快捷键、模块操作)、数组(定义详解、动态初始化、访问)、内存分配、数组内存图】
  10. Java03-day03【switch、循环(for、while、do...while)、三种循环的区别、跳转控制语句、Random、循环经典例题】