Django框架学习【mysql】
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】相关推荐
- Django框架学习(一)Django框架安装和项目创建详解
Django框架学习(一)Django框架安装和项目创建详解 文章目录 Django框架学习(一)Django框架安装和项目创建详解 一.简介 1.1介绍 1.2 URL 1.3.框架原理 二.安装 ...
- Django框架学习收藏
Django 购买视频自学读书笔记 https://www.bilibili.com/video/av17879644/?p=1 ---------自我学习总结01 一.django 1.MVC设计理 ...
- Django框架学习
Django是现在世界上python语言应用最广泛.发展最成熟的web框架.它足够完整 ,不需要依赖其他就可以开发出 非常完整的web应用.Django的主要内容如下: Django综述:了解Djan ...
- Python Web开发——Django框架学习
文章目录 Web开发简介 Web应用技术 Web前端开发 Web后端开发 使用 Django 开发后端服务 项目目标 管理员操作 登录界面 客户管理界面 添加客户界面 药品管理界面 添加药品界面 订单 ...
- django框架访问mysql数据库_Django框架怎么配置mysql数据库
Django框架怎么配置mysql数据库 发布时间:2020-08-01 10:37:54 来源:亿速云 阅读:67 作者:小猪 这篇文章主要讲解了Django框架怎么配置mysql数据库,内容清晰明 ...
- django框架使用mysql报错,及两种解决方法
1.django框架 settings.py文件中部分代码: DATABASES = {# 'default': {# 'ENGINE': 'django.db.backends.sqlite3',# ...
- django框架学习文档_Python四大主流网络编程框架,你知道么?
高并发处理框架-- Tornado Tornado 是使用 Python 编写的一个强大的可扩展的 Web 服务器.它在处理高网络流量时表现得足够强健,却在创建和编写时有着足够的轻量级,并能够被用在大 ...
- Django框架学习--4--分布式路由ORM基础
本篇文章要点: 1.如何通过分布式路由方法避免主路由文件的urlpatterns过于臃肿? 2.使用ORM框架代替数据库的操作? 1. Django的分布式路由实现 创建应用 应用在django项目中 ...
- Django框架学习---入门-内容复习(2.1)
定义模型类 模型类被定义在"应用/models.py"文件中,此例中为"booktest/models.py"文件. 模型类必须继承自Model类,位于包dja ...
- Django框架学习索引
索引目录 1.Django介绍与安装 2.Django流程及模式 3.Django基本配置 4.Django模板(Templages) 1.Django的介绍和安装 3.Django框架模式 4.数据 ...
最新文章
- conda 装tensorboardx_【工欲善其事】TensorboardX的使用
- 时空复杂度(时间复杂度/空间复杂度)O(1)、O(n)、O(n^2)、O(log n)、O(n log n)是什么意思?...
- ValueError: y_true and y_pred contain different number of classes 9, 2. Please provide the true labe
- java创建solr core_Solr定义core.properties
- 基本概念,BGP协议的特征和消息类型,状态转换?
- 7、mybatis主配置文件之mappers
- DSP入门:中断PIE
- 为什么中文分词比英文分词更难?有哪些常用算法?(附代码)
- 关于C#winform程序运行无异常,在生成安装文件安装后提示水晶报表加载失败,系统找不到指定的路径的解决方法...
- 关于Resnet50和ResNeXt50的参数量的简单计算(只考虑卷积层和全连接层)
- 20年未解的MIT密码难题,被自学成才的程序员破解了,比预计早15年
- diamond专题(一)– 简介和快速使用
- SSH(Struts2+Spring+Hibernate)框架搭建流程
- 牛牛以前在老师那里得到了一个正整数数对(x, y), 牛牛忘记他们具体是多少了。 但是牛牛记得老师告诉过他x和y均不大于n, 并且x除以y的余数大于等于k。 牛牛希望你能帮他计算一共有,,,
- Python之面向对象进阶篇
- 网易面试软件测试面试题
- java 基础: 一些稀奇古怪的好东西总结 丰富知识面
- 上海市高级人民法院网
- Clip染色质免疫沉淀(CLIP测序)
- 计算机取证volatility
热门文章
- STM32输出SPWM波,HAL库,cubeMX配置,滤波后输出1KHz正弦波
- MIDI制作的小知识和小经验
- 滤波器简介:FIR与IIR简介
- 常州无线dns服务器在哪,常州移动dns的服务器地址是多少
- 在外包公司干了一年半软件测试的一些反思与总结
- linux下svn配置http访问
- ACM学习历程23——最小周期串问题
- 一文懂高频交易程序化交易和量化交易的别
- 计算机 集备记录,职业中等专业学校计算机集体备课记录.docx
- 微信开放平台【第三方平台】java开发总结:验证票据(component_verify_ticket)(-)