Python自动化之django orm之Q对象

什么是Q对象?

Encapsulates filters as objects that can then be combined logically (using& and |)

关联查询

  1. Poll.objects.get(
  2. Q(pub_date=date(2005, 5, 2)) | Q(pub_date=date(2005, 5, 6)),
  3. question__startswith='Who')

AND AND

  1. def ceshi(request):
  2. from app01 import models
  3. from django.db.models import Q
  4. conn = Q() # 大Q对象
  5. q1 = Q() # 小Q对象
  6. # 下面都是或的关系
  7. q1.connector='OR'
  8. q1.children.append(('id', 1))
  9. q1.children.append(('id', 2))
  10. q1.children.append(('id', 3))
  11. #这个q2也是小Q
  12. q2 = Q()
  13. q2.connector = 'OR'
  14. q2.children.append(('name', 'wo'))
  15. conn.add(q1, 'AND')
  16. print(conn)
  17. print('------')
  18. conn.add(q2, 'AND')
  19. print(conn)
  20. print(q1)
  21. a = models.User.objects.filter(conn)
  22. print(a.values())
  23. return HttpResponse('ok')

结果

  1. (AND: (OR: ('id', 1), ('id', 2), ('id', 3)))
  2. ------
  3. (AND: (OR: ('id', 1), ('id', 2), ('id', 3)), ('name', 'wo'))

AND OR

  1. from django.shortcuts import render, HttpResponse
  2. from django.core.exceptions import NON_FIELD_ERRORS
  3. # Create your views here.
  4. from django import forms
  5. from django.forms import fields
  6. from django.forms import widgets
  7. class User(forms.Form):
  8. usertype = fields.ChoiceField(
  9. choices=[],
  10. widget=widgets.Select
  11. )
  12. def __init__(self,*args,**kwargs):
  13. super(User,self).__init__(*args,**kwargs)
  14. print(self.fields['usertype'])
  15. print(type(self.fields['usertype']))
  16. # print(dir())
  17. def ceshi(request):
  18. from app01 import models
  19. from django.db.models import Q
  20. conn = Q()
  21. q1 = Q()
  22. q1.connector='OR'
  23. q1.children.append(('id', 1))
  24. q1.children.append(('id', 2))
  25. q1.children.append(('id', 3))
  26. q2 = Q()
  27. q2.connector = 'OR'
  28. q2.children.append(('name', 'wo'))
  29. conn.add(q1, 'AND')
  30. print(conn)
  31. print('------')
  32. conn.add(q2, 'OR')
  33. print(conn)
  34. a = models.User.objects.filter(conn)
  35. return HttpResponse('ok')

结果

  1. (AND: (OR: ('id', 1), ('id', 2), ('id', 3)))
  2. ------
  3. (OR: (AND: (OR: ('id', 1), ('id', 2), ('id', 3))), (OR: ('name', 'wo')))

Python自动化之django orm之Q对象的更多相关文章

  1. Python自动化之django的ORM

    django ORM操作 1.什么是ORM? ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作 ...

  2. python web框架Django——ORM

    ORM简介 MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库 ORM是“对象-关系-映射”的简称 ...

  3. 在Django中使用Q()对象

    转载于:  http://www.smallerpig.com/1000.html 问题 一般我们在Django程序中查询数据库操作都是在QuerySet里进行进行,例如下面代码: >>& ...

  4. Django ORM 之基于对象、双下划线查询

    返回ORM目录 Django ORM 内容目录: 一. 基于对象的表查询 二. 基于双下划线的查询 三. 聚合查询 aggregate 四. 分组查询 annotate 一. 基于对象的表查询 1.正 ...

  5. Python自动化之django的ORM操作——Python源码

    """ The main QuerySet implementation. This provides the public API for the ORM. " ...

  6. Python自动化开发 - Django【进阶篇】

    Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行 ...

  7. Python自动化开发 - Django【基础篇】

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为: 大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能 ...

  8. Python自动化开发 - Django基础

    本节内容 一.什么是web框架 二.MVC和MTV视图 三.Django基本命令 四.路由配置系统 五.编写视图 六.Template 七.ORM 一.什么是web框架 对于所有的web应用,本质上其 ...

  9. Python自动化之Django的CSRF

    什么CSRF? CSRF, Cross Site Request Forgery, 跨站点伪造请求.举例来讲,某个恶意的网站上有一个指向你的网站的链接,如果 某个用户已经登录到你的网站上了,那么当这个 ...

随机推荐

  1. 解决win7无法打开chm格式文件的问题

    解决win7无法打开chm格式文件的问题. (一).简单方法(本人用的这个) 1.打开chm2.win7提示安全问题3.chm无法显示内容4.关闭chm5.右键点击chm,点击“解除锁定”,ok  没 ...

  2. cookie封装函数与使用方法(转)

    函数封装: var Cookie = function(name, value, options) { // 如果第二个参数存在 if (typeof value != 'undefined') { ...

  3. TCP报文发送工具

    该工具用于向Socket服务端发送XML报文,软件功能界面如下图所示: 配置好IP和端口后,单击"载入报文文件"按钮,在文件选择对话框中选择报文文件,如图: 报文文件打开后,可在右 ...

  4. TensorFlow分布式部署【单机多卡】

    让TensorFlow飞一会儿 面对大型的深度神经网络训练工程,训练的时间非常重要.训练的时间长短依赖于计算处理器也就是GPU,然而单个GPU的计算能力有限,利用多个GPU进行分布式部署,同时完成一个 ...

  5. 进度条(Progressbar)

    进度条(Progressbar) 提供如下一些样式改变进度条的外观 @android:style/Widget.ProgressBar.Horizontal(水平进度条) @android:style ...

  6. Andoid多语言国际化策略

    目前手上的项目,为了普及覆盖更多的用户群,也已经开始实现了多语言设置这样的功能,不过今天我要说的不是微信,而是我们自己项目中的实现策略. 直接附上关键代码: package com.huolonglu ...

  7. url override and HttpSession implements session

    背景 HttpSession默认使用Cookie存储Session ID,如果在用户禁用浏览器Cookie的功能后,仍打算运用HttpSession来进行会话管理,那么可以搭配URL重写来实现. 实现 ...

  8. Python redis交互

    1.首先安装模块 pip3 install redis 2.代码模板如下: from redis import StrictRedis if __name__ == '__main__': # 设置连 ...

  9. Selenium clear()方法无法清掉数据

    问题描述 clear()方法执行过后, 数据还是在. 根本原因 存在镜像节点. 操作clear()清掉数据后, 镜像节点的数据还在, 就会再补充回去. 解决办法 添加下面代码就可以连同镜像的数据一起去 ...

  10. Oracle GoldenGate OGG管理员手册(较早资料)

    第一章 系统实现简述 前言 编写本手册的目的是为系统管理员以及相关操作人员提供 Oracle  Goldengat  软 件的日常维护和使用的技术参考: 3 ORACLE 第二章 OGG 日常维护操作 ...