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. conda 装tensorboardx_【工欲善其事】TensorboardX的使用
  2. 时空复杂度(时间复杂度/空间复杂度)O(1)、O(n)、O(n^2)、O(log n)、O(n log n)是什么意思?...
  3. ValueError: y_true and y_pred contain different number of classes 9, 2. Please provide the true labe
  4. java创建solr core_Solr定义core.properties
  5. 基本概念,BGP协议的特征和消息类型,状态转换?
  6. 7、mybatis主配置文件之mappers
  7. DSP入门:中断PIE
  8. 为什么中文分词比英文分词更难?有哪些常用算法?(附代码)
  9. 关于C#winform程序运行无异常,在生成安装文件安装后提示水晶报表加载失败,系统找不到指定的路径的解决方法...
  10. 关于Resnet50和ResNeXt50的参数量的简单计算(只考虑卷积层和全连接层)
  11. 20年未解的MIT密码难题,被自学成才的程序员破解了,比预计早15年
  12. diamond专题(一)– 简介和快速使用
  13. SSH(Struts2+Spring+Hibernate)框架搭建流程
  14. 牛牛以前在老师那里得到了一个正整数数对(x, y), 牛牛忘记他们具体是多少了。 但是牛牛记得老师告诉过他x和y均不大于n, 并且x除以y的余数大于等于k。 牛牛希望你能帮他计算一共有,,,
  15. Python之面向对象进阶篇
  16. 网易面试软件测试面试题
  17. java 基础: 一些稀奇古怪的好东西总结 丰富知识面
  18. 上海市高级人民法院网
  19. Clip染色质免疫沉淀(CLIP测序)
  20. 计算机取证volatility

热门文章

  1. STM32输出SPWM波,HAL库,cubeMX配置,滤波后输出1KHz正弦波
  2. MIDI制作的小知识和小经验
  3. 滤波器简介:FIR与IIR简介
  4. 常州无线dns服务器在哪,常州移动dns的服务器地址是多少
  5. 在外包公司干了一年半软件测试的一些反思与总结
  6. linux下svn配置http访问
  7. ACM学习历程23——最小周期串问题
  8. 一文懂高频交易程序化交易和量化交易的别
  9. 计算机 集备记录,职业中等专业学校计算机集体备课记录.docx
  10. 微信开放平台【第三方平台】java开发总结:验证票据(component_verify_ticket)(-)