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表查询)的更多相关文章

  1. 六、Django学习之基于下划线的跨表查询

    六.Django学习之基于下划线的跨表查询 一对一 正向查询的例子为 已知用户名,查询用户的电话号码.反向查询例子反之. 正向查询 其中下划线前的表示表名,无下划线的表示的是Author表 resul ...

  2. FreeSql (二十)多表查询 WhereCascade

    WhereCascade 多表查询时非常方便,有了它可以很轻松的完成类型软删除,租户条件的功能. IFreeSql fsql = new FreeSql.FreeSqlBuilder() .UseCo ...

  3. Django开发之路 一(django安装并测试运行)

    安装Django与测试 1.虚拟环境的安装 一般来说Django的开发最好是在虚拟环境上进行,这样的好处是可以将不同的Django的项目的环境分割开来,相互不影响.比如说项目一用到Python2.x和 ...

  4. Django 学习笔记(二) 《models》

    python 2.7.6 Django1.8.3 IDE eclipse+pydev Django开发的模式就是MTV(c)模式(model. template, view(urls)). 对于mod ...

  5. Django开发:(1)django基础 & url控制器

    HTTP请求协议 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(WWW:World Wide Web )服务器与本地浏览器之间传输超文本 ...

  6. Android流媒体开发之路二:NDK开发Android端RTMP直播推流程序

    NDK开发Android端RTMP直播推流程序 经过一番折腾,成功把RTMP直播推流代码,通过NDK交叉编译的方式,移植到了Android下,从而实现了Android端采集摄像头和麦克缝数据,然后进行 ...

  7. django orm 基于双下划线的跨表查询

    一..基于双下划线的跨表查询(join实现) key:正向查询按字段,反向查询按表明小写 1.一对多跨表查询 查询在跨表中可以有两种方式,正向查询就是关键字段在你要搜索的表,没有关键字段就是反向查询 ...

  8. Django开发网站(二)

    第一课:视图显示 1   建立一个项目:django-admin startproject blog, 进入blog: cd blog 显示:blog(__init__.py settings.py ...

  9. IOS开发之路二十一(UIWebView加载本地html)

    挺简单不多说的直接代码: // // ViewController.h // JSAndJson // // Created by WildCat on 13-9-8. // Copyright (c ...

随机推荐

  1. j2ee学习笔记

    Servlet: ①字符集问题:②身份验证:③统一的输入输出:类似母版,重写ServletResponeceWraper的getWriter,使用缓存流. 然后输出时,分析stringWriter , ...

  2. linux网络路由配置

    网卡配置文件介绍: # vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 (描述网卡对应的设备别名,例如ifcfg-eth0的文件中它为 ...

  3. 查看linux机器cpu、内存环境信息

    2C2G,4C4G,8C16G,16C32G 这里C指cpu物理核数,G指总内存大小 # 查看物理CPU个数 cat  /proc/cpuinfo| grep "physical id&qu ...

  4. 如何用npm安装vue

    下载安装node.js,安装完毕做好配置后开始运行. 如果npm版本太低,需要升级一下npm # 查看版本 $ npm -v #升级 npm cnpm install npm -g 安装vue-cli ...

  5. ZBrush带你发掘脸部雕刻的秘诀(上)

    骨骼,是一门基础艺术,几百年来一直为伟大的艺术大师所研究,它曾经,也将一直是创作现实且可信角色的关键,提高骨骼知识更将大大提高雕刻技能. 当然,这对于现实角色很重要,对卡通和风格化的角色也同样重要,底 ...

  6. JS去空格、截取页面url

    1.  去掉字符串前后所有空格: 代码如下: function Trim(str) { return str.replace(/(^\s*)|(\s*$)/g, ""); } 说明 ...

  7. [POI2005]AUT-The Bus 树状数组维护最大前缀和

    #include<cstdio> #include<algorithm> using namespace std; const int N=100000+3; int x[N] ...

  8. ojdbc14:11.2.0.1.0出错

    首先在相关目录下找到你的ojdbc14的包:比如 我的出错问题:(之前是11.2.0.1.0,后改为10.2.0.1.0) 我的包路径:C:\my_java\maven_repository\com\ ...

  9. js阻止点击事件的冒泡的实现

    <html> <head> <script type="text/javascript"> function fnclick1(){ alert ...

  10. 【深入理解Java虚拟机】自动内存管理机制——内存区域划分

      Java与C++之间有一堵有内存动态分配和垃圾收集技术所围成的"高墙",墙外面的人想进去,墙里面的人却想出来.C/C++程序员既拥有每一个对象的所有权,同时也担负着每一个对象生 ...