Python自动化之django orm之Q对象
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对象的更多相关文章
- Python自动化之django的ORM
		
django ORM操作 1.什么是ORM? ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作 ...
 - python web框架Django——ORM
		
ORM简介 MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库 ORM是“对象-关系-映射”的简称 ...
 - 在Django中使用Q()对象
		
转载于: http://www.smallerpig.com/1000.html 问题 一般我们在Django程序中查询数据库操作都是在QuerySet里进行进行,例如下面代码: >>& ...
 - Django ORM 之基于对象、双下划线查询
		
返回ORM目录 Django ORM 内容目录: 一. 基于对象的表查询 二. 基于双下划线的查询 三. 聚合查询 aggregate 四. 分组查询 annotate 一. 基于对象的表查询 1.正 ...
 - Python自动化之django的ORM操作——Python源码
		
""" The main QuerySet implementation. This provides the public API for the ORM. " ...
 - Python自动化开发 - Django【进阶篇】
		
Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行 ...
 - Python自动化开发 - Django【基础篇】
		
Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为: 大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能 ...
 - Python自动化开发 - Django基础
		
本节内容 一.什么是web框架 二.MVC和MTV视图 三.Django基本命令 四.路由配置系统 五.编写视图 六.Template 七.ORM 一.什么是web框架 对于所有的web应用,本质上其 ...
 - Python自动化之Django的CSRF
		
什么CSRF? CSRF, Cross Site Request Forgery, 跨站点伪造请求.举例来讲,某个恶意的网站上有一个指向你的网站的链接,如果 某个用户已经登录到你的网站上了,那么当这个 ...
 
随机推荐
- Element ui 中使用table组件实现分页记忆选中
			
我们再用vue和element-ui,或者其他的表格的时候,可能需要能记忆翻页勾选,那么实现以下几个方法就ok了 示例如下 <el-table :data="tableData&quo ...
 - c语言中函数的形参test(int *&a)?
			
今天在看一段c代码的时候看到一个函数的形参是(int *&a)居然是这个东西,这让我好生疑惑啊,不知道用这么多的地址符号用意何在呢?传址么? 那也不必这样,只需要用指针完全能够达到这样的效果啊 ...
 - 高斯消元与期望DP
			
高斯消元可以解决一系列DP序混乱的无向图上(期望)DP DP序 DP序是一道DP的所有状态的一个排列,使状态x所需的所有前置状态都位于状态x前: (通俗的说,在一个状态转移方程中‘=’左侧的状态应该在 ...
 - css-扩展选择器
			
(1)关联选择器 <div><p>aaaaaaaaaaaa</p></div> * 设置div标签里面p标签的样式,嵌套标签里面的样式 div p{ b ...
 - sqlserver 获取数据库、表和字段相关信息
			
--获取指定服务器上的所有数据库 SELECT Name FROM Master..SysDatabases ORDER BY Name --获取指定数据库下所有表 SELECT Name FROM ...
 - BS和CS的区别
			
C/S又称Client/Server或客户/服务器模式.服务器通常采用高性能的PC.工作站或小型机,并采用大型数据库系统,如Oracle.Sybase.Informix或 SQL Server.客户端 ...
 - Ubuntu-16.04-Desktop +Hadoop2.7.5+Eclipse-Neon的云计算开发环境的搭建(伪分布式方式)
			
主控终端 主机名 ubuntuhadoop.smartmap.com IP 192.168.1.60 Subnet mask 255.255.255.0 Gateway 192.168.1.1 DNS ...
 - x86项目中读取注册表Register数据项的方法
			
x86项目中使用Registry读取key/value的时候,会出现重定向的问题,解决方法如下: public static string GetMachineGuid() { string guid ...
 - PS改变图像颜色
			
由于写的一个页面主色调变了,里面的一些图标颜色也要相应改变,自己难得重新去psd里面截图,就想着用ps,看能否直接能变换一下图标颜色.其实方法也很简单的. 1:用ps打开需要改变图标颜色的文件,然后选 ...
 - Flutter的教程:ListView
			
本文学习一下列表widget,是最常见的需求 在Flutter中,用ListView来显示列表项,支持垂直和水平方向展示,通过一个属性我们就可以控制其方向 1.水平的列表 2.垂直的列表 3.数据量非 ...