专栏首页从零开始学自动化测试python测试开发django-76.ORM查询之Q查询

python测试开发django-76.ORM查询之Q查询

前言

ORM 使用 filter() 查询的时候,当有多个条件的时候,可以使用 Q 查询

Q 查询 or

如有个 Card 模型,表里面有以下数据

查询 card_user 名称为 YOYO 或 yoyo的数据,使用 SQL 可以这样查询

select * from yoyo_card where card_user = 'YOYO' or 'yoyo';

filter() 查询,查询或关系

MyDjango>python manage.py shell

>>> from yoyo.models import Card
>>> from django.db.models import Q
>>>
>>> Card.objects.filter(Q(card_user = 'YOYO') | Q(card_user = 'yoyo'))
<QuerySet [<Card: 1000000000002222>, <Card: 520000000001>]>
>>>

使用 | 和 or 都可以表示或关系

Card.objects.filter(Q(card_user = 'YOYO') or Q(card_user = 'yoyo'))

Q查询 and

同时满足2个条件,使用 & 和 and 都可以

MyDjango>python manage.py shell

>>> from yoyo.models import Card
>>> from django.db.models import Q
>>>
>>> Card.objects.filter(add_time__month=6).filter(card_user = 'YOYO')
<QuerySet [<Card: 1000000000002222>, <Card: 520000000001>]>
>>>
>>> Card.objects.filter(Q(add_time__month=6) & Q(card_user = 'YOYO'))
<QuerySet [<Card: 1000000000002222>, <Card: 520000000001>]>
>>>
>>> Card.objects.filter(Q(add_time__month=6) and Q(card_user = 'YOYO'))
<QuerySet [<Card: 1000000000002222>, <Card: 520000000001>]>
>>>

Q查询 not

Q 对象可以使用~ 操作符取反,这允许组合正常的查询和取反(NOT) 查询 查询 card_user = ‘YOYO’ 并且 add_time 的日期不是 21号的数据

>>> Card.objects.filter(Q(card_user = 'YOYO') & ~Q(add_time__day=21))
<QuerySet [<Card: 520000000001>]>

本文分享自微信公众号 - 从零开始学自动化测试(yoyoketang),作者:上海悠悠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-28

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python测试开发django-75.ORM根据日期查询(__range)

    在使用django的 ORM 查询时候,我想查询最近3天的数据,需根据日期查询某一段时间的数据

    上海-悠悠
  • Selenium2+python自动化75-Chrome配置加载

    一、加载Chrome配置 chrome加载配置方法,只需改下面一个地方,username改成你电脑的名字(别用中文!!!) '--user-data-dir=...

    上海-悠悠
  • Selenium2+python自动化45-18种定位方法(find_elements)

    前言 江湖传言,武林中流传八种定位,其中xpath是宝刀屠龙,css是倚天剑。 除了这八种,其实还有十种定位方法,眼看就快失传了,今天小编让失传已久的定位方法重...

    上海-悠悠
  • 一文详解路由算法

    泛泛来讲,网络层在计算机网络中承担的主要功能是:将数据从一台主机移动到另外一台主机。详细一点说,网络层的主要功能是:路由和转发。

    roobtyan
  • 2018 年 ie 漏洞复现合集

    对 2018 年几个IE漏洞的复现与说明,之前复现的时候在仓库的文档中简单的说明了一下,以下是这几个漏洞的复现报告与一些基本的利用方法,这些漏洞或多或少都出现在...

    信安之路
  • 基于三种黑盒测试技术生成测试用例(PKU)

    1. 输入范围(从命令行输入)检查: a. 整数类型检测, b. 下界小于等于上界; c. 不正确时提示重新输入; 2. 应用等价类划分技术,对于输入范...

    葆宁
  • python3 练习题100例 (三)

    题目三:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

    py3study
  • 宜信开源|数据库审核软件Themis的规则解析与部署攻略

    Themis是宜信公司DBA团队开发的一款数据库审核产品,可帮助DBA、开发人员快速发现数据库质量问题,提升工作效率。其名称源自希腊神话中的正义与法律女神。项目...

    宜信技术学院
  • 前沿 | 新框架SyConn利用卷积神经网络和随机森林阅读神经成像:可识别线粒体和突触等

    机器之心原创 作者:Yujia 参与:Joni、Rick R、吴攀 人脑是一个智能而复杂的机器。这种类比在某些方面是准确的,并且在大脑研究领域中提供了一种方法。...

    机器之心
  • 从大间隔分类器到核函数:全面理解支持向量机

    机器之心

扫码关注云+社区

领取腾讯云代金券