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 ...
随机推荐
- Nginx配置Q&A
隐藏响应头 How can remove Nginx from http response header? - Stack Overflow more_set_headers 'Server: my- ...
- CaptCha的现状与未来
2011年的老文.................转自于伯乐在线:http://blog.jobbole.com/4655/ 有一个机会,朋友推荐一个创业的哥们给我认识,方向就是验证码识别 ...
- 【技术累积】【点】【java】【6】时间戳
闲聊 加班多诶,写博客诶. 基本 时间戳,直观理解就是时间上面盖个戳罢了,在时间这个轴上面记录个点: unix时间戳表示从开始的时间点开始,经过了多少秒: 可以简单的看做是一个计时器: 基本定义可以直 ...
- java必备技能
Android应用程序开发是以Java语言为基础的,所以需要有扎实的Java基础知识.首先熟悉java基本语法,然后熟悉设计模式等. a) Java基础语法:看下面的<Java知识点列表> ...
- 前端web通过flask操作数据库-增删改查
后端python代码: #coding:utf8 from flask import Flask,request,render_template import pymysql as mysql imp ...
- Swift - 反射(Reflection)的介绍与使用样例(附KVC介绍)
1,反射(Reflection) 对于C#.Java开发人员来说,肯定都对反射这个概念相当熟悉.所谓反射就是可以动态获取类型.成员信息,同时在运行时(而非编译时)可以动态调用任意方法.属性等行为的特性 ...
- Final 用法
可修饰:类及类的成员.成员变量.局部变量,不能修饰构造方法 final修饰的类不能被继承但可以继承其他的类 final修饰的类不能被重写和继承,子类修改的方法可以加继承 final修饰的局部变量和成员 ...
- VMware ESXi定制版(OEM ISO)资源下载(包含5.1\5.5\6.0)
一.VMware ESXi 5.1.0 update03 1.VMware-ESXi-5.1.0-Update3-2323236-hitachi-0400.iso(日立) 2.VMware-ESXi ...
- github配置单个及多个sshkey的操作方法
一.配置单个sshkey 配置SSHKey命令操作: git --version //检验git是否装好了 cd / cd ~/.ssh //到master目录下 ll //展示所有文件 ssh-ke ...
- Java基础学习总结(64)——Java内存管理
本文介绍的Java虚拟机(JVM)的自动内存管理机制主要是参照<深入理解Java虚拟机>(第2版)一书中的内容,主要分为两个部分:Java内存区域和内存溢出异常.垃圾回收和内存分配策略.因 ...