Python自动化之django orm之Q对象

什么是Q对象?

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

关联查询

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

AND AND

def ceshi(request):
from app01 import models
from django.db.models import Q
conn = Q() # 大Q对象
q1 = Q() # 小Q对象 # 下面都是或的关系
q1.connector='OR'
q1.children.append(('id', 1))
q1.children.append(('id', 2))
q1.children.append(('id', 3)) #这个q2也是小Q
q2 = Q()
q2.connector = 'OR'
q2.children.append(('name', 'wo'))
conn.add(q1, 'AND')
print(conn)
print('------')
conn.add(q2, 'AND')
print(conn)
print(q1)
a = models.User.objects.filter(conn)
print(a.values())
return HttpResponse('ok')

结果

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

AND OR

from django.shortcuts import render, HttpResponse
from django.core.exceptions import NON_FIELD_ERRORS
# Create your views here. from django import forms
from django.forms import fields
from django.forms import widgets class User(forms.Form):
usertype = fields.ChoiceField(
choices=[],
widget=widgets.Select ) def __init__(self,*args,**kwargs):
super(User,self).__init__(*args,**kwargs)
print(self.fields['usertype'])
print(type(self.fields['usertype']))
# print(dir()) def ceshi(request):
from app01 import models
from django.db.models import Q
conn = Q()
q1 = Q()
q1.connector='OR'
q1.children.append(('id', 1))
q1.children.append(('id', 2))
q1.children.append(('id', 3)) q2 = Q()
q2.connector = 'OR'
q2.children.append(('name', 'wo'))
conn.add(q1, 'AND')
print(conn)
print('------')
conn.add(q2, 'OR')
print(conn) a = models.User.objects.filter(conn)
return HttpResponse('ok')

结果

(AND: (OR: ('id', 1), ('id', 2), ('id', 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. node.js和JavaScript的关系

    node.js是一个基于 Chrome V8 引擎的 JavaScript 运行时环境. 一.类比JavaScript和java JavaScript java V8 JVM node.js JRE ...

  2. 小tip: base64:URL背景图片与web页面性能优化——张鑫旭

    一.base64百科 Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,可用于在HTTP环境下传递较长的标识信息. 某人: 唉,我彻底废柴了,为何上面明明是中文,洒家却看不懂嘞,为什 ...

  3. PHP 抽象类实现接口注意事项(含PHP与.Net的区别)

    最近在学习Drupal8,看到源码里面一个抽象类BlockBase实现了一个接口BlockPluginInterface,但是并没有实现该接口的所有方法.然后我就不淡定了,因为之前是做.NET的,记忆 ...

  4. 为什么不要使用 select * from xxx (oracle 亲测)

    打开已用时间set timing on;create table users(id number(20), name varchar2(20), password varchar2(20));inse ...

  5. sql 中的分隔符

    1.通过分隔符可以将其中的内容作为一个整体的字符串进行处理. 假设数据库中有一个表,名为user info,注意这个名字,user 和 info 中间存在一个空格. 如果直接写如下查询,会报错,可能会 ...

  6. Ubuntu 16.04下 - vi编辑器使用【backspace】无法删除

    参考:https://blog.csdn.net/leiwangzhongde/article/details/83339589

  7. leetCode题解 Reverse Words in a String III

    1.题目描述 Given a string, you need to reverse the order of characters in each word within a sentence wh ...

  8. spring boot(9)-mybatis关联映射

    一对多 查询type表的某一条数据,并且要同时查出所有typeid与之配置的user,最终要得到一个以下类型的Type对象 public class Type { String id; String ...

  9. popup定位引擎popper.js介绍

    https://medium.com/@FezVrasta/popper-js-v1-5e8b3acd888c https://survivejs.com/blog/popper-interview/ ...

  10. UpdateServer事务实现机制

    UpdateServer(UPS) 是OceanBase的写入单点,一个集群中只有一台UPS服务器,所有的写都写入到这台机器.OceanBase采用基于静动态数据分离的机制,静态数据存储在静态数据服务 ...