1.首先定义连个类模型

# 定义图书模型类BookInfo
class BookInfo(models.Model):btitle = models.CharField(max_length=50, unique=True)bpub_date = models.DateField()bread = models.IntegerField(default=0)bcomment = models.IntegerField(default=0)isDelete = models.BooleanField(default=False)class meta:db_table = 'tb_books'def __str__(self):return self.btitle# 定义英雄模型类HeroInfo
class HeroInfo(models.Model):hname = models.CharField(max_length=50, unique=False)hgender = models.BooleanField(default=False)isDelete = models.BooleanField(default=False)hcontent = models.CharField(max_length=500)hbook = models.ForeignKey('BookInfo')class meta:db_table = 'tb_heros'def __str__(self):return self.hname

2.数据库插入数据

insert into tb_books(hname,hgender,hbook_id,hcontent,isDelete) values
('郭靖',1,1,'降龙十八掌',0),
('黄蓉',0,1,'打狗棍法',0),
('黄药师',1,1,'弹指神通',0),
('欧阳锋',1,1,'蛤蟆功',0),
('梅超风',0,1,'九阴白骨爪',0),
('乔峰',1,2,'降龙十八掌',0),
('段誉',1,2,'六脉神剑',0),
('虚竹',1,2,'天山六阳掌',0),
('王语嫣',0,2,'神仙姐姐',0),
('令狐冲',1,3,'独孤九剑',0),
('任盈盈',0,3,'弹琴',0),
('岳不群',1,3,'华山剑法',0),
('东方不败',0,3,'葵花宝典',0),
('胡斐',1,4,'胡家刀法',0),
('苗若兰',0,4,'黄衣',0),
('程灵素',0,4,'医术',0),
('袁紫衣',0,4,'六合拳',0);
insert into tb_heros(btitle,bpub_date,bread,bcomment,isDelete) values
('射雕英雄传','1980-5-1',12,34,0),
('天龙八部','1986-7-24',36,40,0),
('笑傲江湖','1995-12-24',20,80,0),
('雪山飞狐','1987-11-11',58,24,0);

*3.数据库

4.两张表进行关联查询

1.根据英雄名字查询在哪一本书中:
>>> BookInfo.objects.filter(heroinfo__hname='郭靖')
<QuerySet [<BookInfo: 射雕英雄传>]>
#  注意此时的【heroinfo__hname】中作为查询对象的时候模型的名称必须全部小写,否则会报错2.利用模糊查询英雄名字带有靖字的书:
>>> BookInfo.objects.filter(heroinfo__hname__contains='靖')
<QuerySet [<BookInfo: 射雕英雄传>]>3.根据书id查找书中出现英雄的名字:
>>> HeroInfo.objects.filter(hbook__id=1)
<QuerySet [<HeroInfo: 郭靖>, <HeroInfo: 黄蓉>, <HeroInfo: 黄药师>, <HeroInfo: 欧阳锋>, <HeroInfo: 梅超风>]>
#  注意这里被查询的对象是hbook,是英雄名字表中的外键,此时就可以直接使用外键查询到名字4.查询书id为1和2中所有英雄的名字:
>>> HeroInfo.objects.filter(hbook__id__in=[1,2])
<QuerySet [<HeroInfo: 郭靖>, <HeroInfo: 黄蓉>, <HeroInfo: 黄药师>, <HeroInfo: 欧阳锋>, <HeroInfo: 梅超风>, <HeroInfo: 乔峰>, <HeroInfo: 段誉>, <HeroInfo: 虚竹>, <HeroInfo: 王语嫣>]>5.也还有另外一种写法:
>>> hero=HeroInfo.objects.get(hname='郭靖')
>>> hero.hbook
<BookInfo: 射雕英雄传>
#  首先拿到郭靖这个名字,然后再根据郭靖这个对象里面的id属性拿到对应书的名称,注意此时是属于英雄当中是有外键为hbook的就可以直接使用,下面这种方法中没有外键6.另外写法:根据书的id来查找全部对应的英雄:
>>> book=BookInfo.objects.get(id=1)
>>>> book.heroinfo_set.all()
<QuerySet [<HeroInfo: 郭靖>, <HeroInfo: 黄蓉>, <HeroInfo: 黄药师>, <HeroInfo: 欧阳锋>, <HeroInfo: 梅超风>]>
#  注意此时是没有外键的书中,要用【.heroinfo_set.all()】是隐藏的方法。
模型名字小写__set.all()#  总结:一查多:使用外键,多查一:直接可以查

Django框架学习【mysql】相关推荐

  1. Django框架学习(一)Django框架安装和项目创建详解

    Django框架学习(一)Django框架安装和项目创建详解 文章目录 Django框架学习(一)Django框架安装和项目创建详解 一.简介 1.1介绍 1.2 URL 1.3.框架原理 二.安装 ...

  2. Django框架学习收藏

    Django 购买视频自学读书笔记 https://www.bilibili.com/video/av17879644/?p=1 ---------自我学习总结01 一.django 1.MVC设计理 ...

  3. Django框架学习

    Django是现在世界上python语言应用最广泛.发展最成熟的web框架.它足够完整 ,不需要依赖其他就可以开发出 非常完整的web应用.Django的主要内容如下: Django综述:了解Djan ...

  4. Python Web开发——Django框架学习

    文章目录 Web开发简介 Web应用技术 Web前端开发 Web后端开发 使用 Django 开发后端服务 项目目标 管理员操作 登录界面 客户管理界面 添加客户界面 药品管理界面 添加药品界面 订单 ...

  5. django框架访问mysql数据库_Django框架怎么配置mysql数据库

    Django框架怎么配置mysql数据库 发布时间:2020-08-01 10:37:54 来源:亿速云 阅读:67 作者:小猪 这篇文章主要讲解了Django框架怎么配置mysql数据库,内容清晰明 ...

  6. django框架使用mysql报错,及两种解决方法

    1.django框架 settings.py文件中部分代码: DATABASES = {# 'default': {# 'ENGINE': 'django.db.backends.sqlite3',# ...

  7. django框架学习文档_Python四大主流网络编程框架,你知道么?

    高并发处理框架-- Tornado Tornado 是使用 Python 编写的一个强大的可扩展的 Web 服务器.它在处理高网络流量时表现得足够强健,却在创建和编写时有着足够的轻量级,并能够被用在大 ...

  8. Django框架学习--4--分布式路由ORM基础

    本篇文章要点: 1.如何通过分布式路由方法避免主路由文件的urlpatterns过于臃肿? 2.使用ORM框架代替数据库的操作? 1. Django的分布式路由实现 创建应用 应用在django项目中 ...

  9. Django框架学习---入门-内容复习(2.1)

    定义模型类 模型类被定义在"应用/models.py"文件中,此例中为"booktest/models.py"文件. 模型类必须继承自Model类,位于包dja ...

  10. Django框架学习索引

    索引目录 1.Django介绍与安装 2.Django流程及模式 3.Django基本配置 4.Django模板(Templages) 1.Django的介绍和安装 3.Django框架模式 4.数据 ...

最新文章

  1. linux centos 挂载ntfs文件系统
  2. [codeforces] 527A Playing with Paper
  3. Webserver内存溢出分析
  4. 关于SSL证书配置、升级的一些问题总结
  5. 如何从零学习Python----知乎答案
  6. 【招聘内推】百度地图招聘推荐推送算法工程师
  7. Tosca:设置执行结束时间
  8. 见缝插针的人_能让人瞬间就哭的句子,字字扎心,催泪无底线!
  9. Rplidar A2 屏蔽固定角度
  10. 拉姆达表达式启动一个线程
  11. 淘宝API开发系列---阿里.聚石塔.开放平台的使用
  12. 论文结尾参考文献形式
  13. Redis incr解决并发问题
  14. XML Publisher 模板设计技巧
  15. 3dsMax制作弯曲动画导入Unity后动画丢失
  16. 车道线检测:ultra fast lane detection + 车道保持
  17. 照我思索,你的电脑百毒不侵 (转)
  18. Java多线程学习十五:公平锁和非公平锁,为什么要“非公平”?
  19. apdl多荷载步设置
  20. python编程题---继承

热门文章

  1. Windows磁盘卷有几种?各有什么特点?
  2. Ubuntu制作ISO文件并通过光驱挂载实现共享
  3. css3低版本浏览器兼容性问题
  4. types.js?a742:39 Uncaught TypeError: Cannot read property ‘prototype‘ of undefined at eval (type
  5. python扩展库numpy中函数meshgrid()的使用[当你想要两个for循环嵌套处理时,就该想到它]
  6. 黑马76期培训视频分享
  7. ADAS-开源环视360全景拼接代码原理分析与实现(一)
  8. 踩坑~CSS~8 位16 进制颜色
  9. 实用的OAuth开源项目
  10. 统一建模语言UML(四):领域模型和类图