day 81 天 ORM 操作复习总结
# ###############基于对象查询(子查询)##############
一、对多查询
正向查询
from django.shortcuts import render,HttpResponse
from app01 import models
# Create your views here.def query(request):# ###############基于对象查询(子查询)############### 一对多查询 book-->publish#正向查询:# 查询python这本书的出版社的email邮箱.python_obj = models.Book.objects.filter(title ='python').first()print(python_obj.publish.email)return HttpResponse(' OK')
# ###############基于对象查询(子查询)############## # 正向查询按字段查询# 一对多查询 book----------------------->publish# <---------------------- #反向查询 book_set.all() 反向查询 反向查询#查询五道口出版社的书籍名称 pub_obj =models.Publish.objects.filter(name ='五道口出版社').last()
for obj in pub_obj.book_set.all(): print(obj.title) return HttpResponse(' OK')
二、多对多 查询
# 按字段查询 正向查询(author.all())# 多对多 book----------------------> author # <---------------------- # book_set.all() 正向多对多查询
#查询python作者的年龄
python_obj =models.Book.objects.filter(title ='python').first()print(python_obj)for author in python_obj.authors.all():print(author.name,author.age)return HttpResponse('ok')
输出结果
反向多对多
#查询 alex出版过的书籍alex =models.Author.objects.filter(name ='哪吒').first()for book in alex.book_set.all():print(book.title)return HttpResponse('ok')
三 、一对一的关系
author 于authordetail表的关系 。
一对一正向查询
反向查询
查询家在山东的作者名:
###############基于queryset和__查询(join的查询)####################
四 、
正向查询 : 按字段
反向查询:按表名
案例1 .
#查询python这本书籍的出版社的邮箱
python_obj = models.Book.objects.filter(title = 'python' ).first()
print(python_obj.publish.email)
return HttpResponse( ' OK' )
|
案例2.
案例3
两种方法
输出结果:
VIEWS文件 :
from django.shortcuts import render,HttpResponse
from app01 import models
# Create your views here.def query(request):# ###############基于对象查询(子查询)############### 正向查询按字段查询# 一对多查询 book----------------------->publish# <----------------------#反向查询 book_set.all()# #正向查询:## # 查询python这本书的出版社的email邮箱.## python_obj = models.Book.objects.filter(title ='python').first()# print(python_obj.publish.email)#f反向查询 按表明小写_set.all()#查询五道口出版社的书籍名称# pub_obj =models.Publish.objects.filter(name ='五道口出版社').last()# for obj in pub_obj.book_set.all():# print(obj.title)# 按字段查询 正向查询(author.all())
# 多对多 book----------------------> author# <----------------------# book_set.all()#查询python作者的年龄# python_obj =models.Book.objects.filter(title ='python').first()# print(python_obj)# for author in python_obj.authors.all():# print(author.name,author.age)#查询 alex出版过的书籍# alex =models.Author.objects.filter(name ='哪吒').first()# for book in alex.book_set.all():# print(book.title)## 按字段查询 正向查询(authordetail.all())# 多对多 author----------------------> authordetail# <----------------------# 按表名 author#查询 哪吒的电话号码nezhao_obj = models.Author.objects.filter(name ='哪吒').first()print(nezhao_obj.authorDetail.telephone)# 反向查询# 查询家在山东的作者名字add_obj = models.AuthorDetail.objects.filter(addr ="山东").first()print(add_obj.author.name)#############################基于queryset和__查询(join的查询)##########################正向查询:按字段#反向查询 :表名小写#查询python这本书籍的出版社的邮箱ret =models.Book.objects.filter(title ='python').values('publish__email')print(ret )#查询清华出版社的书籍名称#方法1qinghua_obj =models.Publish.objects.filter(name ='清华出版社').values('book__title')print(qinghua_obj)#方法2qinghua_obj= models.Book.objects.filter(publish__name='清华出版社').values('title')print(qinghua_obj)# 查询哪吒的手机号ret = models.Author.objects.filter(name ='哪吒').values('authorDetail__telephone')print(ret)return HttpResponse('ok')#查询手机号 以 186开头的作者的出版过的书籍名称以及对应的出版社
2018.10.29日整理
from django.db import models# Create your models here.class Author(models.Model):nid = models.AutoField(primary_key=True)name=models.CharField( max_length=32)age=models.IntegerField()# 与AuthorDetail建立一对一的关系authorDetail=models.OneToOneField(to="AuthorDetail",on_delete=models.CASCADE)def __str__(self):return self.nameclass AuthorDetail(models.Model):nid = models.AutoField(primary_key=True)birthday=models.DateField()telephone=models.BigIntegerField()addr=models.CharField( max_length=64)def __str__(self):return self.addrclass Publish(models.Model):nid = models.AutoField(primary_key=True)name=models.CharField( max_length=32)city=models.CharField( max_length=32)email=models.EmailField()def __str__(self):return self.nameclass Book(models.Model):nid = models.AutoField(primary_key=True)title = models.CharField( max_length=32)publishDate=models.DateField()price=models.DecimalField(max_digits=5,decimal_places=2)# 与Publish建立一对多的关系,外键字段建立在多的一方publish=models.ForeignKey(to="Publish",to_field="nid",on_delete=models.CASCADE)# 与Author表建立多对多的关系,ManyToManyField可以建在两个模型中的任意一个,自动创建第三张表authors=models.ManyToManyField(to='Author',)def __str__(self):return self.title
orm查询
from django.shortcuts import render,HttpResponse# Create your views here.
from .models import *
def index(request):#查询沙河出版社所有书籍的名称和价格(一对多)ret = Publish.objects.filter(name="沙河出版社").values("book__title","book__price") #正向查询按字段,反向查询按表名.print(ret)#打印结果:<QuerySet [{'book__title': 'python入门', 'book__price': Decimal('100.00')}]>"""select book.title,book.price from Publish inner join book on Publish.pk =Book.pulish_id where publish.name ="沙河出版社" """ret=Book.objects.filter(publish__name="沙河出版社").values("title","price")print(ret)#打印结果:<QuerySet [{'title': 'python入门', 'price': Decimal('100.00')}]>return HttpResponse("ok ")
转载于:https://www.cnblogs.com/mengbin0546/p/9125358.html
day 81 天 ORM 操作复习总结相关推荐
- ORM操作models一对多、多对多关系
ORM操作 单表.一对多表操作 1 from django.db import models 2 3 4 class UserGroup(models.Model): 5 title = models ...
- Django ORM操作
Django ORM操作 一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 <1> all(): 查询所有结果<2> get(**kwargs): 返回与所给筛选条 ...
- Django - ORM操作
Django - ORM操作 一. 必知必会13条 单表查询之神奇的双下划线 二. ForeignKey操作 正向查找 反向操作 三. ManyToManyField 四. 聚合查询和分组查询 聚合 ...
- django mysql orm教程_带你了解Django ORM操作(基础篇)
前言 在日常开发中,需要大量对数据库进行增删改查操作. 如果头铁的话,使用原生SQL是最好的,毕竟性能又高,又灵活. 但是通常情况下,我们不是太需要那么苛刻的性能,也没有那么多刁钻的需求用原生SQL ...
- 第十八 django及ORM操作
一.项目及ORM操作 1.添加新项目 python manage.py startapp blog 2.配置数据库类 models.py from django.db import models# C ...
- Django 之ORM操作
1.什么是ORM? 全称关系对象映射Object Relational Mapping(简称ORM),是通过描述面向对象与数据库之间的对应的元数据,将对象持久化的更新到数据库中. 有了ORM,就不需要 ...
- 【Django】ORM操作#2
目录 必知必会的13条查询方法 单表查询之神奇的双下划线 一对多 ForeignKey 多对多 ManyToManyField 在Python脚本中调用Django环境 Django终端打印SQL语句 ...
- django ORM 操作
ORM操作 select * from tb where id > 1 # 对应关系 models.tb.objects.filter(id__gt=1) models.tb.objects.f ...
- Python+django网页设计入门(7):常用ORM操作
前导课程: Python+django网页设计入门(6):文件上传与数据导入 Python+django网页设计入门(5):自定义用户注册与登录功能 Python+django网页设计入门(4):用户 ...
最新文章
- 皮一皮:论智能酒店的高等级提示...
- CAS无锁(乐观锁、自旋锁)优化
- DotNetNuke的升级路径
- yelee主题中的Busuanzi网站统计失效问题
- windows安装mongodb(快速简易版)
- Loj#2769-「ROI 2017 Day 1」前往大都会【最短路树,斜率优化】
- 软考解析:2017年上半年下午试卷
- android 动态换肤框架,GitHub - ss520k/Android-Skin-Loader: 一个通过动态加载本地皮肤包进行换肤的皮肤框架...
- vc6.0添加注释快捷键
- Qt工作笔记-Qt文档阅读笔记-setMouseTracking(无需按下移动使得widget获取鼠标位置)
- leetcode 646 python
- php怎么调用dll例子,php调用dll的实例操作动画与代码分享_PHP教程
- Java笔记——泛型擦除
- 安卓手机免root修改hosts文件
- GoF设计模式——工厂模式(C++实现)
- 宁夏诗词学会红寺堡采风专辑
- 【百页AI报告】2017人工智能现状、创业图景与未来(98PPT)
- Flutter Animation动画
- 论文写作 之 Related work
- 直接耦合的互补输出级
热门文章
- [Win32]IP数据报的首部如何定义
- php下扩展php_curl.dll的安装
- Redis第二集:Linux下安装Redis和测试,包含命令代码和问题处理办法,超详细版
- python变量词是什么意思_python1变量,表达式和语句
- 地区的json数据_Python 连接开放航空交通数据,轻松构建航班跟踪应用!
- web接口响应时间标准_从零搭建Web应用(二)
- im即时通讯源码_IM消息ID技术专题(六):深度解密滴滴的高性能ID生成器(Tinyid)
- cytoscape使用方法_信号通路分析工具教程——Cytoscape及OmniPath插件
- 项目上线简化流程介绍
- 如何在 Kubernetes 中对无状态应用进行分批发布