ajango--orm操作
一 必知必会13条:
返回对象列表的:
1.all() :查所有
2.filter() :查一行
3.exclude():排除(里面可以写条件,意思除了这个条件的所有)
4.order_by():默认升序(可以写条件,加符号为降序)
5.reverse() :它是对已经排好序的基础上进行翻转。
6.distinct():从返回结果中剔除重复纪录(如果你查询跨越多个表,可能在计算QuerySet时得到重复的结果。此时可以使用distinct(),注意只有在PostgreSQL中支持按字段去重。)
返回特殊的对象列表:
7.values() :返回一个列表,里面是字典,括号里可以加条件
8.values_list() :返回一个列表,里面是元祖,括号里可以加条件
返回具体对象的:
9.get():获取某一条,娶不到就报错
10.first():默认按id取第一个,娶不到就是none,不会报错。
11.last();默认按id取最后一个,娶不到就是none,不会报错。
返回布尔值的:
12.exists():判断查询结果是否存在
返回数字的:
13.count(): 计数 。
二 模糊查询,神奇的下划线:
models.Tb1.objects.filter(id__lt=, id__gt=) # 获取id大于1 且 小于10的值 models.Tb1.objects.filter(id__in=[, , ]) # 获取id等于11、、33的数据
models.Tb1.objects.exclude(id__in=[, , ]) # not in models.Tb1.objects.filter(name__contains="ven") # 获取name字段包含"ven"的
models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感 models.Tb1.objects.filter(id__range=[, ]) # id范围是1到3的,等价于SQL的bettwen and 类似的还有:startswith,istartswith, endswith, iendswith date字段还可以:
models.Class.objects.filter(first_day__year=)
三 orm外键
查询:
一对一:(不存在正反向,直接查)
models.Author.objects.get(id=).au.tel # 通过id查电话 (基于对象的)
ss= models.Author.objects.filter(name='刘能').values('au__tel')[0]['au__tel'] # 通过名字拿电话,基于字段查
一对多:
基于对象查:
正向查(假设书和出版设是一对多):
models.Book.objects.get(id=).publis.name # 通过书的id查出版社
反向查:
models.Publish.objects.get(name='锅盖头出版社').book__set.all() # 通过出版社拿书
基于字段查:
正向查(正向按属性,反向按表名):
models.Book.objects.filter(title='天龙九部').values(publis__name) # 通过书查出版设, 前面的是条件
反向查
models.Publish.objects.filter(name='锅盖头出版社').values(book__title) # t通过0出版社拿书
多对多:
基于对象查:
正向查:(书和作者)
models.Book.objects.get(id=1).authors.all().values(name)# 通过书拿作者
反向查: models.Author.objects.get(name=刘能).book_set.all().values('title') 通过作者拿书
基于字段查询(正向按属性,反向按表名):
正向查
models.Book.objects.filter(title='天龙九部').values(authors__name) #通过书拿作者
反向查:
models.Author.objects.filter(name='刘能').values(book__title) # 通过作者拿书
ajango--orm操作的更多相关文章
- Python/Django(CBV/FBV/ORM操作)
Python/Django(CBV/FBV/ORM操作) CBV:url对应的类(模式) ##====================================CBV操作============ ...
- python/ORM操作详解
一.python/ORM操作详解 ===================增==================== models.UserInfo.objects.create(title='alex ...
- Django中ORM操作
ORM操作: class UserInfo(models.Model): username = models.CharField(max_length=32) password = models.Ch ...
- Django的ORM操作
ORM操作 select * from tb where id > 1 # 对应关系 models.tb.objects.filter(id__gt=1) models.tb.objects.f ...
- python 外键用法 多对多关系 ORM操作 模板相关
一.app/models中写类(设计表结构) 1.普通类 class A(models.Model): id=modles.AutoField(primary_key=True) name=mode ...
- Django之ORM操作
Django之ORM操作 前言 Django框架功能齐全自带数据库操作功能,本文主要介绍Django的ORM框架 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计 ...
- Django之ORM操作(聚合 分组、F Q)
Django之ORM操作(聚合 分组.F Q) 聚合 aggregate()是QuerySet的一个终止子句,也就是说,他返回一个包含一些键值对的字典,在它的后面不可以再进行点(.)操作. 键的名 ...
- python第一百零五天 ---Django 基础 路由系统 URL 模板语言 ORM 操作
一 路由系统 URL 1 url(r'^index/',views.index) url(r'^home/', views.Home.as_view()) 2 url(r'^detail-(\d+). ...
- Django ORM 操作 必知必会13条 单表查询
ORM 操作 必知必会13条 import os # if __name__ == '__main__': # 当前文件下执行 os.environ.setdefault('DJANGO_SETTIN ...
- 在pycharm中进行ORM操作
打开manage.py, 复制 import..... if.......os..... 导入django,开启django, 导入app中的models orm操作 import os if _ ...
随机推荐
- learning mqtt protocol
reference: http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html
- Qt UI tips
窗口居中: adjustSize(); move((availableGeometry.width() - width()) / 2, (availableGeometry.height() - h ...
- python 面向对象 继承 派生 组合
具体参考博客:http://www.cnblogs.com/linhaifeng/articles/6182264.html#_label12 一.面向对象 面向对象:对象与对象之间的相互交互,不可预 ...
- cordova/phonegap/webapp性能优化方法
1.有条件可以自己做UI,不要用框架.用框架的话不要用jquery mobile,用sencha touch或者jqmobi(app framework) 2.不要在服务器生成UI,在本地生成. 3. ...
- matlab 将数字矩阵转换成图像
MATLAB中,常常使用imshow()函数来显示图像,而此时的图像矩阵可能经过了某种运算.在matlab中,为了保证精度,经过了运算的图像矩阵I其数据类型会从unit8型变成double型.如果直接 ...
- 显式拥塞通告(ECN)及其在Linux上的实现
1 ECN简介 首先看看ECN握手报文的特点,根据RFC3168,ECN握手报文IP头部不能够设置ECT和CE位的 SYN报文TCP标志字段的CWR和ECE位被置1 SYN-ACK报文的CWR位被置0 ...
- Altium Designer 使用中的小技巧1
在布线的过程中所学到的一点技巧:在没有画原理图的情况下,直接绘制PCB板,需要敷铜Ppolygon pour,但没有网络标号,就无法连上要连的网络,焊盘,怎么办呢?需要事先将需要连接在一起的元器件(焊 ...
- Vue移动端项目总结
使用Vue项目写了一个移动端项目,然后又把项目硬生生的抽离了组件,一直忙着写RN项目没有时间总结心得,今天上午终于下定决心,写点总结. 1.position:absolute: 定位的时候不同手机的浏 ...
- python笔记18-高阶函数
高阶函数: 如果一个函数的入参是一个函数名的话,那这个函数就是一个高阶函数 函数即变量 # def hello(name):# print(name)# new_hello = hello#hello ...
- 使用numpy与matplotlib.pyplot画图
使用numpy与matplotlib.pyplot画图 1. 折线图 1 # -*- enccoding:utf-8 -*- 2 import numpy as np 3 import matplot ...