深海Django少年
orm查询,如果遇到我之前的环境报错
就可去manage.py中拷贝前四行代码到tests文件中,然后增加两行代码:
import django
django.setup()
或者任意新建一个py文件,在上面写一样的配置
然后今天我们的主要内容是orm里的一些操作
1.单表操作
2.神奇的__
查询
3.图书管理表设计
4.外键字段(一对多)的增删改查
5.外键字段(一对一)的增删改查
6.跨表查询
又可以分为子查询和联表查询
7.聚合查询
8.分组查询
9.F与Q查询
首先我们开始单表操作的十三条
1.all() 是查询所有
2.filter()是筛选
3.get()也是筛选,不过选到的是数据对象本身且容易报错,不推荐
4.first()取queryset中的第一个对象
5.last()取queryset中最后一个对象
6.count()统计数据的个数
7.value()获取对象中指定字段的值列表套字典
8.value_list()获取对象中指定字段的值列表
9.order_by()按照指定字段排序
10.reverse()颠倒顺序
11.exclude()排除什么什么之外
12.exists()可以判断是否有值
13.distinct()去重
还有一些神奇的__
查询
假设我们已经成功创建了一个表
比如我们要查询价格大于五百的书籍
我们可以res=models.Books.objects.filter(price__gt=500)
__gt代表greater than 大于
__lt 小于
__gte greater than equal 大于等于
__lte 小于等于
__in=[] 是列表里面的固定数值
__range=()在这个范围之内
__year
__month
__date
年月日
__startswith 以''里的内容开头
__endswith 以''里内容结尾
__contain 里面包含''里的内容
一对多增删改查
增删改查都有两种方式
增
第一个
models.Book.objects.create(title='SOE-992',price=0,publish_id=1)
第二个
publish_obj=models.Publish.objects.filter(pk=2).first()
models.Book.objects.create(title='SILK-024',price=400,publish=publish_obj)
改
第一种
model.Book.objects.filter(pk=1).update(publish_id=2)
第二中
publish_obj=models.Publish.objects.filter(pk=1).first()
models.Book.object.filter(pk=1).update(publish=publish_obj)
删除
models.Book.object.filter(pk=1).delete()
多对多增删改查
增
book_obj=models.Book.objects.filter(pk=2).first()
book_obj.authors.add(1,2)
删
就是把上面的add改成delete
清空
也是把上面的add改成clear
嘿嘿,跨表查询开始啦
这里正向我只列出一个按字段
查询诗句主键为二的书的出版社的名字
book_obj=models.Book.objects.filter(pk=2).first()
print(book_obj.publish.name)
反向的话就是
publish_obj = models.Publish.objects.filter(name='91corn').first()
print(publish_obj.book_set)
app01.Book.None# print(publish_obj.book_set.all())
还有就是用__来找
查询书籍pk为2的出版社名称
正向
res=models.Book.object.filter(pk=2).value('publish_name')
反向
res=models.Publish.objects.filter(book__pk=2).values('name')
这里还是用实例来举例我们懂得快一点
深海Django少年的更多相关文章
- Django中的ORM介绍,字段以及字段的参数。
Object Relational Mapping(ORM) ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据 ...
- 信号(Django信号、Flask信号、Scrapy信号)
简介 Django.Flask.scrapy都包含了一个“信号分配器”,使得当一些动作在框架的其他地方发生的时候,解耦的应用可以得到提醒. 通俗来讲,就是一些动作发生的时候,信号允许特定的发送者去提醒 ...
- Django ORM-01
What is ORM Django ? ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. ...
- 使用Django框架
1.安装Django 在命令行模式下使用pip工具来安装Django,pip工具的安装方法见此篇 pip install django 2.确认是否安装成功 在Python交互模式下 import d ...
- Django之模板(Template)
Django模板系统 官方文档 每一个Web框架都需要一种很便利的方法用于动态生成HTML页面. 最常见的做法是使用模板. 模板包含所需HTML页面的静态部分,以及一些特殊的模版语法,用于将动态内容插 ...
- Django 的信号 & Flask 的信号
信号:框架内部已帮助开发者预留的可扩展的位置 一.Django 的信号 项目目录结构: django_signal |--- app01 |--- models.py |--- views.py .. ...
- Django&,Flask&pyrthon原生sql语句 基本操作
Django框架 ,Flask框架 ORM 以及pyrthon原生sql语句操作数据库 WHAT IS ORM? ORM( Object Relational Mapping) 对象关系映射 , 即通 ...
- docker配置mysql主从与django实现读写分离
一.搭建主从mysql环境 1 下载mysql镜像 docker pull mysql:5.7 2 运行刚下载的mysql镜像文件 # 运行该命令之前可以使用`docker images`是否下载成功 ...
- django -- 模版语言之过滤器Filters和for循环
前戏 在前面写的图书管理系统中,我们对模版语言应该已经不陌生了,使用{{ }}包裹起来的就是模版语言,只需要记住两种就可以了 {{ 变量名 }} 变量相关的 {% %} ...
随机推荐
- 视区相关单位vw, vh ,vm,CSS/CSS3长度、时间、频率、角度单位大全
一.CSS长度值 em 相对于父元素的字体大小 ex 相对于小写字母"x"的高度 gd 一般用在东亚字体排版上,这个与英文并无关系 rem 相对于根元素字体大小 vw 相对于视窗的 ...
- javascript 计算两个整数的百分比值
///计算两个整数的百分比值 function GetPercent(num, total) { num = parseFloat(num); total = parseFloat(total); i ...
- 构建一个简单的Spring Boot项目
11 构建一个简单的Spring Boot项目 这个章节描述如何通过Spring Boot构建一个"Hello Word"web应用,侧重介绍Spring Boot的一些重要功能. ...
- Linux服务器攻击防御(转)
攻击小贴士 如果你打算做一些搓事,那么你需要采取一些措施来保护自己.这是一切的前提,不然我会追杀你,并破坏你的生活. 我总结了几大忌(fuckups): 不要在honeypots执行操作.(在一切开始 ...
- HDU 6470 /// 矩阵快速幂
题目大意: f[1]=1 f[2]=2 f[n]=f[n-1]+2*f[n-2]+n^3 在某博客截的图 现在忘记原博位置了 抱歉 根据递推式1和递推式3构造出两个矩阵 #include <bi ...
- 使用腾讯地图请求来源未被授权, 此次请求来源域名/ip:servicewechat.com
原文:微信小程序使用腾讯地图请求来源未被授权, 此次请求来源域名:servicewechat.com 版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明 ...
- css的9个常用选择器
1.类选择器(通过类名进行选择) <!DOCTYPE html> <html> <head> <title></title> </he ...
- 关于django中的rest_framework的使用
rest_framework框架的认识 它是基于Django的,帮助我们快速开发符合RESTful规范的接口框架. 一 路由 可以通过路由as_view()传参 根据请求方式的不同执行对应不 ...
- powerdesigner级联删除
在Reference Properties属性窗口的Integrity属性页中选中Delete Constraint的Cascade;选中Update Constraint的Cascade.
- STL笔试面试题总结(干货)(转)
STL笔试面试题总结 一.STL有哪些组件? STL提供六大组件彼此此可以组合套用: 1.容器容器就是各种数据结构,我就不多说,看看下面这张图回忆一下就好了,从实现角度看,STL容器是一种class ...