1. 概述
  2. 查询集表示从数据库获取的对象的集合
  3. 查询集可以有多个过滤器
  4. 过滤器就是一个函数,基于所给的参数限制查询集结果
  5. SQL角度来说,查询集和select语句等价,过滤器就像where条件
  6. 查询集
  7. 在管理器上调用过滤器方法返回查询集
  8. 查询集经过过滤器筛选后返回新的查询集,所以可以写成链式调用
  9. 惰性执行
  10. 创建查询集不会带来任何数据库的访问,直到调用数据库时,才会访问数据
  11. 直接访问数据的情况:
  12. 迭代
  13. 序列化
  14. if合用
  15. 返回查询集的方法称为过滤器
  16. all():返回查询集中的所有数据
  17. filter():保留符合条件的数据
  18. filter(键=值)
  19. filter(键=值,键=值)
  20. filter(键=值).filter(键=值) 且的关系
  21. exclude():过滤掉符合条件的
  22. order_by():排序
  23. values():一条数据就是一个字典,返回一个列表
  24. get()
  25. 返回一个满足条件的对象
  26. 注意:
  27. 如果没有找到符合条件的对象,会引发模型类.DoesNotExist异常
  28. 如果找到多个对象,会引发模型类MultipleObjectsReturned异常
  29. count():返回查询集中对象的个数
  30. first():返回查询集中第一个对象
  31. last():返回查询集中最后一个对象
  32. exits():判断查询集中是否有数据,如果有数据返回 True,否则返回 False.
  33. 限制查询集
  34. 查询集返回列表,可以使用下标的方法进行限制,等同于sql中的limit语句
  35. 注意:下标不能是负数
  36. 示例:studentsList = Students.stuObj2.all()[0:5]
  37. 查询集的缓存
  38. 概述:
  39. 每个查询集都包含一个缓存,来最小化对数据库的访问
  40. 在新建的查询集中,缓存首次为空,第一次对查询集求值,会发生数据缓存,Django会将查询出来的数据做一个缓存,并返回查询结果。
  41. 以后的查询直接使用查询集的缓存
  42. 字段查询
  43. 概述
  44. 实现了sql中的where语句,作为方法filter(),exclude(),get()的参数
  45. 语法:属性名称__比较运算符=值
  46. 外键:属性名称_id
  47. 转义:类似sql中的like语句
  48. like有关情况看我哥他%是为了匹配点位,匹配数据中的%使用(where like "\%"
  49. filter(sname__contains="%")
  50. 比较运算符
  51. exact:判断,大小写敏感
  52. filter(isDelete=False)
  53. contains:是否包含,大小写敏感
  54. studentsList = Students.stuObj2.filter(sname__contains="孙")
  55. startswith,endswith:以value开头或结尾,大小写敏感
  56. 以上四个在前面加上i,就表示不区分大小写iexact,icontains,istartswith,iendswith
  57. isnull,isnotnull
  58. 是否为空
  59. filter(sname__isnull=False)
  60. in:是否包含在范围内
  61. gt大于,gte大于等于,lt小于,lte小于等于
  62. year,month,day,week_day,hour,minute,second
  63. studentsList = Students.stuObj2.filter(lastTime__year=2017)
  64. 跨关联查询
  65. 处理join查询
  66. 语法:
  67. 模型类名__属性名__比较运算符
  68. # 描述中带有‘薛延美’这三个字的数据是属于哪个班级的
  69. grade = Grades.objects.filter(students__scontend__contains='薛延美')
  70. print(grade)
  71. 查询快捷pk代表的主键
  72. 聚合函数
  73. 使用aggregate函数返回聚合函数的值
  74. Avg
  75. Count
  76. Max
  77. maxAge = Student.stuObj2.aggregate(Max('sage'))
  78. maxAge为最大的sage
  79. Min
  80. Sum
  81. F对象
  82. 可以使用模型的A属性与B属性进行比较
  83. from django.db.models import F,Q
  84. def grades1(request):
  85. g = Grades.objects.filter(ggirlnum__gt=F('gboynum'))
  86. print(g)
  87. # [<Grades: python02>,<Grades: python03>]
  88. return HttpResponse("OOOOOOOo")
  89. 支持F对象的算术运算
  90. g = Grades.objects.filter(ggirlnum__gt=F('gboynum')+20)
  91. Q对象
  92. 概述:过滤器的方法的关键字参数,条件为And模式
  93. 需求:进行or查询
  94. 解决:使用Q对象
  95. def students4(request):
  96. studentsList = Students.stuObj2.filter(Q(pk__lte=3) | Q(sage__gt=50))
  97. return render(request, 'myApp/students.html', {"students": studentsList})
  98. 只有一个Q对象的时候,就是用于正常匹配条件
  99. studentsList = Students.stuObj2.filter(~Q(pk__lte=3))
  100. ~Q是取反

概述查询集表示从数据库获取的对象的集合查询集可以有多个过滤器过滤器就是一个函数,基于所给的参数限制查询集结果从SQL角度来说,查询集和select语句等价,过滤器就像where条件查询集在管理器上调用过滤器方法返回查询集查询集经过过滤器筛选后返回新的查询集,所以可以写成链式调用惰性执行创建查询集不会带来任何数据库的访问,直到调用数据库时,才会访问数据直接访问数据的情况:迭代序列化与if合用返回查询集的方法称为过滤器all():返回查询集中的所有数据filter():保留符合条件的数据filter(键=值)filter(键=值,键=值)filter(键=值).filter(键=值)   且的关系exclude():过滤掉符合条件的order_by():排序values():一条数据就是一个字典,返回一个列表get()返回一个满足条件的对象注意:如果没有找到符合条件的对象,会引发模型类.DoesNotExist异常如果找到多个对象,会引发模型类MultipleObjectsReturned异常count():返回查询集中对象的个数first():返回查询集中第一个对象last():返回查询集中最后一个对象exits():判断查询集中是否有数据,如果有数据返回 True,否则返回 False.限制查询集查询集返回列表,可以使用下标的方法进行限制,等同于sql中的limit语句注意:下标不能是负数示例:studentsList = Students.stuObj2.all()[0:5]查询集的缓存概述:每个查询集都包含一个缓存,来最小化对数据库的访问在新建的查询集中,缓存首次为空,第一次对查询集求值,会发生数据缓存,Django会将查询出来的数据做一个缓存,并返回查询结果。以后的查询直接使用查询集的缓存字段查询概述实现了sql中的where语句,作为方法filter(),exclude(),get()的参数语法:属性名称__比较运算符=值外键:属性名称_id转义:类似sql中的like语句 like有关情况看我哥他%是为了匹配点位,匹配数据中的%使用(where like "\%") filter(sname__contains="%")比较运算符exact:判断,大小写敏感filter(isDelete=False)contains:是否包含,大小写敏感studentsList = Students.stuObj2.filter(sname__contains="孙")startswith,endswith:以value开头或结尾,大小写敏感以上四个在前面加上i,就表示不区分大小写iexact,icontains,istartswith,iendswithisnull,isnotnull是否为空filter(sname__isnull=False)in:是否包含在范围内gt大于,gte大于等于,lt小于,lte小于等于year,month,day,week_day,hour,minute,secondstudentsList = Students.stuObj2.filter(lastTime__year=2017)跨关联查询处理join查询语法:模型类名__属性名__比较运算符# 描述中带有‘薛延美’这三个字的数据是属于哪个班级的grade = Grades.objects.filter(students__scontend__contains='薛延美')print(grade)查询快捷pk代表的主键聚合函数使用aggregate函数返回聚合函数的值AvgCountMaxmaxAge = Student.stuObj2.aggregate(Max('sage'))maxAge为最大的sage。MinSumF对象可以使用模型的A属性与B属性进行比较from django.db.models import F,Qdef grades1(request):g = Grades.objects.filter(ggirlnum__gt=F('gboynum'))print(g)# [<Grades: python02>,<Grades: python03>]return HttpResponse("OOOOOOOo")支持F对象的算术运算g = Grades.objects.filter(ggirlnum__gt=F('gboynum')+20)Q对象概述:过滤器的方法的关键字参数,条件为And模式需求:进行or查询解决:使用Q对象def students4(request):studentsList = Students.stuObj2.filter(Q(pk__lte=3) | Q(sage__gt=50))return render(request, 'myApp/students.html', {"students": studentsList})只有一个Q对象的时候,就是用于正常匹配条件studentsList = Students.stuObj2.filter(~Q(pk__lte=3))~Q是取反

django模型查询的更多相关文章

  1. django模型查询操作

    一旦创建好了数据模型,Django就会自动为我们提供一个数据库抽象API,允许创建.检索.更新和删除对象操作 下面的示例都是通过下面参考模型来对模型字段进行操作说明: from django.db i ...

  2. 八.django模型系统(二)之常用查询及表关系的实现

    Ⅰ.常用查询  1.几个概念 每一个django模型类,都有一个默认的管理器,objects,查询就是依赖于objects管理器进行的(在创建时就被添加了). QuerySet表示数据库中对象的列表( ...

  3. {django模型层(二)多表操作}一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询、分组查询、F查询和Q查询

    Django基础五之django模型层(二)多表操作 本节目录 一 创建模型 二 添加表记录 三 基于对象的跨表查询 四 基于双下划线的跨表查询 五 聚合查询.分组查询.F查询和Q查询 六 xxx 七 ...

  4. Django 08 Django模型基础3(关系表的数据操作、表关联对象的访问、多表查询、聚合、分组、F、Q查询)

    Django 08 Django模型基础3(关系表的数据操作.表关联对象的访问.多表查询.聚合.分组.F.Q查询) 一.关系表的数据操作 #为了能方便学习,我们进入项目的idle中去执行我们的操作,通 ...

  5. Django 07 Django模型基础2 (常用查询和多表关联)

    Django 07 Django模型基础2 (常用查询和多表关联) 一.常用查询 #查找数据 def search_user(request): #获取 rs = User.objects.first ...

  6. django模型

    用django时,只要用到数据库就得用到模型. 一.数据库的MTV开发模式 从MVC到MTV 所谓软件架构的MVC模式将数据的存取逻辑(Module),表现逻辑(View)和业务逻辑(Controll ...

  7. 【Python】django模型models的外键关联使用

    Python 2.7.10,django 1.8.6 外键关联:http://www.bubuko.com/infodetail-618303.html 字段属性:http://www.cnblogs ...

  8. Django模型-数据库操作

    前言 前边记录的URLconf和Django模板全都是介绍页面展示的东西,也就是表现层的内容.由于Python先天具备简单而强大的数据库查询执行方法,Django 非常适合开发数据库驱动网站. 这篇开 ...

  9. Django 模型中自定义Manager和模型方法

    1.自定义管理器(Manager) 在语句Book.objects.all()中,objects是一个特殊的属性,通过它来查询数据库,它就是模型的一个Manager. 每个Django模型至少有一个m ...

随机推荐

  1. React(0.13) 定义一个动态的组件

    1.因为jsx将两个花括号之间的内容渲染为动态值,只需要引用对应的变量即可 <!DOCTYPE html> <html> <head> <title>R ...

  2. Map的有序和无序实现类,与Map的排序

    1.HashMap.Hashtable不是有序的: 2.TreeMap和LinkedHashMap是有序的(TreeMap默认 Key 升序,LinkedHashMap则记录了插入顺序). 今天做统计 ...

  3. iOS扩大UIButton按钮的可点击区域

    一.开发中遇到的问题 我们在开发时有时遇到这中情况:UI给的图片很小,button的点击区域要求比较大.如果用 setBackgroundImage: 方式设置图片会导致图片也跟着button的fra ...

  4. Linux系统排查——CPU负载篇

    本随笔介绍CPU负载的排查手段. 查看系统负载的工具:uptime,w,都能查看系统负载,系统平均负载是处于运行或不可打扰状态的进程的平均数, 可运行:运行态,占用CPU,或就绪态,等待CPU调度. ...

  5. linux文件系统 - 初始化(二)

    加载initrd(上) 一.目的 本文主要讲述linux3.10文件系统初始化过程的第二阶段:加载initrd. initrd是一个临时文件系统,由bootload负责加载到内存中,里面包含了基本的可 ...

  6. xcode修改项目名后反复出现 clang error

    xcode修改项目名后反复出现 clang error,  提示 ld: file not found . 并且该错误并不是出现在项目编译阶段,而是项目的Tests 的link阶段, 同时提示 xct ...

  7. 供CImage类显示的半透明PNG文件处理方法

    原文链接: http://blog.sina.com.cn/s/blog_4070692f010003gy.html   前补:没想到这个帖子好像挺多人看哪……看来大家都被这个png郁闷的够呛.显示p ...

  8. 源码安装mysql 5.7.19数据库

    1.系统要求yum install -y cmake make gcc gcc-c++ bison  ncurses ncurses-devel 2.创建用户和组groupadd mysql & ...

  9. asp.net 浏览器下载文件的四种方式

    // 方法一:TransmitFile实现下载 protected void Button1_Click(object sender, EventArgs e) { Response.ContentT ...

  10. 怎样为你的CSDN博客增加百度统计

    曾经CSDN使用的 量子统计 能够非常好的统计我们的博客的訪问数量.地域等等信息,可是不知道后来为什么不在使用了.那么怎样找到 一种替换的方式那? 下边,就给大家介绍一下怎样使用百度统计. 百度统计账 ...