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, 跨站点伪造请求.举例来讲,某个恶意的网站上有一个指向你的网站的链接,如果 某个用户已经登录到你的网站上了,那么当这个 ...
随机推荐
- 解决win7无法打开chm格式文件的问题
解决win7无法打开chm格式文件的问题. (一).简单方法(本人用的这个) 1.打开chm2.win7提示安全问题3.chm无法显示内容4.关闭chm5.右键点击chm,点击“解除锁定”,ok 没 ...
- cookie封装函数与使用方法(转)
函数封装: var Cookie = function(name, value, options) { // 如果第二个参数存在 if (typeof value != 'undefined') { ...
- TCP报文发送工具
该工具用于向Socket服务端发送XML报文,软件功能界面如下图所示: 配置好IP和端口后,单击"载入报文文件"按钮,在文件选择对话框中选择报文文件,如图: 报文文件打开后,可在右 ...
- TensorFlow分布式部署【单机多卡】
让TensorFlow飞一会儿 面对大型的深度神经网络训练工程,训练的时间非常重要.训练的时间长短依赖于计算处理器也就是GPU,然而单个GPU的计算能力有限,利用多个GPU进行分布式部署,同时完成一个 ...
- 进度条(Progressbar)
进度条(Progressbar) 提供如下一些样式改变进度条的外观 @android:style/Widget.ProgressBar.Horizontal(水平进度条) @android:style ...
- Andoid多语言国际化策略
目前手上的项目,为了普及覆盖更多的用户群,也已经开始实现了多语言设置这样的功能,不过今天我要说的不是微信,而是我们自己项目中的实现策略. 直接附上关键代码: package com.huolonglu ...
- url override and HttpSession implements session
背景 HttpSession默认使用Cookie存储Session ID,如果在用户禁用浏览器Cookie的功能后,仍打算运用HttpSession来进行会话管理,那么可以搭配URL重写来实现. 实现 ...
- Python redis交互
1.首先安装模块 pip3 install redis 2.代码模板如下: from redis import StrictRedis if __name__ == '__main__': # 设置连 ...
- Selenium clear()方法无法清掉数据
问题描述 clear()方法执行过后, 数据还是在. 根本原因 存在镜像节点. 操作clear()清掉数据后, 镜像节点的数据还在, 就会再补充回去. 解决办法 添加下面代码就可以连同镜像的数据一起去 ...
- Oracle GoldenGate OGG管理员手册(较早资料)
第一章 系统实现简述 前言 编写本手册的目的是为系统管理员以及相关操作人员提供 Oracle Goldengat 软 件的日常维护和使用的技术参考: 3 ORACLE 第二章 OGG 日常维护操作 ...