Django开发之路 二(django的models表查询)
django的models表查询
一、单表查询
(1) all(): 查询所有结果 # 返回的QuerySet类型 (2) filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 #返回的QuerySet类型 (3) get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个, #返回的models对象
如果符合筛选条件的对象超过一个或者没有都会抛出错误。 (4) exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象 #返回的QuerySet类型 (5) values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列 #返回的QuerySet类型
model的实例化对象,而是一个可迭代的字典序列 (6) values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列 #返回的QuerySet类型 (7) order_by(*field): 对查询结果排序 (8) reverse(): 对查询结果反向排序 (9) distinct(): 从返回结果中剔除重复纪录 (10) count(): 返回数据库中匹配查询(QuerySet)的对象数量。 (11) first(): 返回第一条记录 #返回的models对象
(12) last(): 返回最后一条记录 #返回的models对象
(13) exists(): 如果QuerySet包含数据,就返回True,否则返回False
二、双下划线查询
(1)models.Tb1.objects.filter(id__lt=10, id__gt=1) # 获取id大于1 且 小于10的值 (2)models.Tb1.objects.filter(id__in=[11, 22, 33]) # 获取id等于11、22、33的数据
(3)models.Tb1.objects.exclude(id__in=[11, 22, 33]) # not in
(4)models.Tb1.objects.filter(name__contains="ven") #字段包含指定值的
(5)models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感 (6)models.Tb1.objects.filter(id__range=[1, 2]) # 范围bettwen and (7)还有startswith,istartswith, endswith, iendswith之类
三、跨表查询
1、表结构
class Something(models.Model):
name = models.CharField(max_length=32) class UserType(models.Model):
caption = models.CharField(max_length=32)
s = models.ForeignKey('Something',on_delete=models.CASCADE) class UserInfo(models.Model):
user = models.CharField(max_length=32)
pwd = models.CharField(max_length=32)
user_type = models.ForeignKey('UserType') # user_type_id
2、查询
userinfo_obj = UserInfo.objects.all()
查询到的是里面包含多个UserInfo对象,取第一个UserInfo对象则
userinfo_obj[0]
取第一个对象的值则为
id = userinfo_obj[0].user.id
user = userinfo_obj[0].user.user
pwd = userinfo_obj[0].user.pwd
3、一对多操作
创建数据一步到位
UserInfo.objects.create(user='abj','pwd'='',user_type_id=3)
4、反向查询
反向查询其他表的数据双下划线__很重要!如查询‘普通用户’用user_type__caption即可
q = UserInfo.objcets.filter(user_type__caption='普通用户')
Django开发之路 二(django的models表查询)的更多相关文章
- 六、Django学习之基于下划线的跨表查询
六.Django学习之基于下划线的跨表查询 一对一 正向查询的例子为 已知用户名,查询用户的电话号码.反向查询例子反之. 正向查询 其中下划线前的表示表名,无下划线的表示的是Author表 resul ...
- FreeSql (二十)多表查询 WhereCascade
WhereCascade 多表查询时非常方便,有了它可以很轻松的完成类型软删除,租户条件的功能. IFreeSql fsql = new FreeSql.FreeSqlBuilder() .UseCo ...
- Django开发之路 一(django安装并测试运行)
安装Django与测试 1.虚拟环境的安装 一般来说Django的开发最好是在虚拟环境上进行,这样的好处是可以将不同的Django的项目的环境分割开来,相互不影响.比如说项目一用到Python2.x和 ...
- Django 学习笔记(二) 《models》
python 2.7.6 Django1.8.3 IDE eclipse+pydev Django开发的模式就是MTV(c)模式(model. template, view(urls)). 对于mod ...
- Django开发:(1)django基础 & url控制器
HTTP请求协议 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器与本地浏览器之间传输超文本 ...
- Android流媒体开发之路二:NDK开发Android端RTMP直播推流程序
NDK开发Android端RTMP直播推流程序 经过一番折腾,成功把RTMP直播推流代码,通过NDK交叉编译的方式,移植到了Android下,从而实现了Android端采集摄像头和麦克缝数据,然后进行 ...
- django orm 基于双下划线的跨表查询
一..基于双下划线的跨表查询(join实现) key:正向查询按字段,反向查询按表明小写 1.一对多跨表查询 查询在跨表中可以有两种方式,正向查询就是关键字段在你要搜索的表,没有关键字段就是反向查询 ...
- Django开发网站(二)
第一课:视图显示 1 建立一个项目:django-admin startproject blog, 进入blog: cd blog 显示:blog(__init__.py settings.py ...
- IOS开发之路二十一(UIWebView加载本地html)
挺简单不多说的直接代码: // // ViewController.h // JSAndJson // // Created by WildCat on 13-9-8. // Copyright (c ...
随机推荐
- Axis2 1.7.4构建项目
1.下载axis2项目文件 http://axis.apache.org/axis2/java/core/download.html 2.Maven文件的pom.xml文件 3.将下载的axis2-1 ...
- 获取 Windows Phone 的 User-Agent 字符串
这个是简单介绍一下如何在wp开发中获取 Windows Phone 的 User-Agent 字符串,更多wp移动开发就去那个wp教程网吧.http://wp.662p.com 使用方法 public ...
- 转载:SQL Server中查询CPU占用高的SQL语句
SQL Server中查询CPU占用高的SQL语句 SQL Server 表变量的用法 究竟什么是敏捷测试--朱少民
- C++序列化使用
error C2248 无法访问私有成员 :原因 ifstream 作为参数必须传引用! (1):C++使用STL序列化:原文链接:http://blog.csdn.net/pandaxcl/arti ...
- jdbc转账操作
public class cs{ public static void main(String[] args){ try{ Connection conn=JdbcUtils.getConnectio ...
- 创建dynamics CRM client-side (一) - Client-side Events
这个系列是帮助大家了解dynamics CRM (customer engagement CE) 的client-side 开发. Client-side Events 1. Form OnLoad ...
- 操作ajax生成页面的一个问题
一般而言,js代码都放在页面的底部.在做项目的过程中,发现放在底部的代码没有执行,原来操作的是ajax生成的部分.这时候,页面加载js的顺序就要小心了.例子如下: <!doctype html& ...
- 为my_string类创建复制构造函数copy constructor ,拷贝函数名和类同名
为下面的my_string类创建一个复制构造函数,并将定义该类的代码提交. my_string类的定义: class my_string { char *s; public: my_string(ch ...
- 【转】Oracle基础结构认知—进程及逻辑结构 礼记八目 2017-12-17 19:33:21
原文地址:https://www.toutiao.com/i6500477672349499917/ 一. Process Structure进程结构 Oracle有两种类型的进程: 服务器进程和后台 ...
- Drop it FreeCodeCamp
function drop(arr, func) { // Drop them elements. for(var start=0 ;start<arr.length; start++){ if ...