django的models表查询

  一、单表查询

  1. 1 all(): 查询所有结果 # 返回的QuerySet类型
  2.  
  3. 2 filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 #返回的QuerySet类型
  4.  
  5. 3 get(**kwargs): 返回与所给筛选条件相匹配的对象,返回结果有且只有一个, #返回的models对象
  6. 如果符合筛选条件的对象超过一个或者没有都会抛出错误。
  7.  
  8. 4 exclude(**kwargs): 它包含了与所给筛选条件不匹配的对象 #返回的QuerySet类型
  9.  
  10. 5 values(*field): 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列 #返回的QuerySet类型
  11. model的实例化对象,而是一个可迭代的字典序列
  12.  
  13. 6 values_list(*field): 它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列 #返回的QuerySet类型
  14.  
  15. 7 order_by(*field): 对查询结果排序
  16.  
  17. 8 reverse(): 对查询结果反向排序
  18.  
  19. 9 distinct(): 从返回结果中剔除重复纪录
  20.  
  21. 10 count(): 返回数据库中匹配查询(QuerySet)的对象数量。
  22.  
  23. 11 first(): 返回第一条记录 #返回的models对象
  24. 12 last(): 返回最后一条记录 #返回的models对象
  25. 13 exists(): 如果QuerySet包含数据,就返回True,否则返回False

  二、双下划线查询

  1. 1models.Tb1.objects.filter(id__lt=10, id__gt=1) # 获取id大于1 且 小于10的值
  2.  
  3. 2models.Tb1.objects.filter(id__in=[11, 22, 33]) # 获取id等于11、22、33的数据
  4. 3models.Tb1.objects.exclude(id__in=[11, 22, 33]) # not in
  5.   
  6. 4models.Tb1.objects.filter(name__contains="ven") #字段包含指定值的
  1. 5models.Tb1.objects.filter(name__icontains="ven") # icontains大小写不敏感
  2.  
  3. 6models.Tb1.objects.filter(id__range=[1, 2])    # 范围bettwen and
  4.  
  5. 7)还有startswithistartswith, endswith, iendswith之类

  三、跨表查询

  1、表结构

  1. class Something(models.Model):
  2. name = models.CharField(max_length=32)
  3.  
  4. class UserType(models.Model):
  5. caption = models.CharField(max_length=32)
  6. s = models.ForeignKey('Something'on_delete=models.CASCADE
  7.  
  8. 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、查询

  1. userinfo_obj = UserInfo.objects.all()

  查询到的是里面包含多个UserInfo对象,取第一个UserInfo对象则

  1. userinfo_obj[0]

  取第一个对象的值则为

  1. id = userinfo_obj[0].user.id
  2. user = userinfo_obj[0].user.user
  3. pwd = userinfo_obj[0].user.pwd

  3、一对多操作

  创建数据一步到位

  1. UserInfo.objects.create(user='abj','pwd'='',user_type_id=3)

  4、反向查询

  反向查询其他表的数据双下划线__很重要!如查询‘普通用户’用user_type__caption即可

  1. 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. Nginx配置Q&A

    隐藏响应头 How can remove Nginx from http response header? - Stack Overflow more_set_headers 'Server: my- ...

  2. CaptCha的现状与未来

    2011年的老文.................转自于伯乐在线:http://blog.jobbole.com/4655/       有一个机会,朋友推荐一个创业的哥们给我认识,方向就是验证码识别 ...

  3. 【技术累积】【点】【java】【6】时间戳

    闲聊 加班多诶,写博客诶. 基本 时间戳,直观理解就是时间上面盖个戳罢了,在时间这个轴上面记录个点: unix时间戳表示从开始的时间点开始,经过了多少秒: 可以简单的看做是一个计时器: 基本定义可以直 ...

  4. java必备技能

    Android应用程序开发是以Java语言为基础的,所以需要有扎实的Java基础知识.首先熟悉java基本语法,然后熟悉设计模式等. a) Java基础语法:看下面的<Java知识点列表> ...

  5. 前端web通过flask操作数据库-增删改查

    后端python代码: #coding:utf8 from flask import Flask,request,render_template import pymysql as mysql imp ...

  6. Swift - 反射(Reflection)的介绍与使用样例(附KVC介绍)

    1,反射(Reflection) 对于C#.Java开发人员来说,肯定都对反射这个概念相当熟悉.所谓反射就是可以动态获取类型.成员信息,同时在运行时(而非编译时)可以动态调用任意方法.属性等行为的特性 ...

  7. Final 用法

    可修饰:类及类的成员.成员变量.局部变量,不能修饰构造方法 final修饰的类不能被继承但可以继承其他的类 final修饰的类不能被重写和继承,子类修改的方法可以加继承 final修饰的局部变量和成员 ...

  8. 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 ...

  9. github配置单个及多个sshkey的操作方法

    一.配置单个sshkey 配置SSHKey命令操作: git --version //检验git是否装好了 cd / cd ~/.ssh //到master目录下 ll //展示所有文件 ssh-ke ...

  10. Java基础学习总结(64)——Java内存管理

    本文介绍的Java虚拟机(JVM)的自动内存管理机制主要是参照<深入理解Java虚拟机>(第2版)一书中的内容,主要分为两个部分:Java内存区域和内存溢出异常.垃圾回收和内存分配策略.因 ...